create-einja-app 0.2.17 → 0.2.18

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 (270) hide show
  1. package/package.json +2 -2
  2. package/templates/default/.claude/hooks/einja/playwright-resize.sh +12 -2
  3. package/templates/default/.claude/settings.json +15 -0
  4. package/templates/default/.cursor/commands/task-vibe-kanban-loop.md +107 -42
  5. package/templates/default/.env.develop +0 -4
  6. package/templates/default/.env.example +1 -0
  7. package/templates/default/.env.preview +0 -4
  8. package/templates/default/.env.staging +19 -0
  9. package/templates/default/.github/actions/ci/action.yml +39 -0
  10. package/templates/default/.github/actions/migrate/action.yml +39 -0
  11. package/templates/default/.github/actions/neon-export-env/action.yml +28 -0
  12. package/templates/default/.github/actions/setup/action.yml +20 -0
  13. package/templates/default/.github/workflows/claude.yml +1 -0
  14. package/templates/default/.github/workflows/{cleanup-neon-branches.yml → cleanup-pr-preview-db.yml} +28 -24
  15. package/templates/default/.github/workflows/cleanup-pr-preview-on-close.yml +50 -0
  16. package/templates/default/.github/workflows/deploy-pr-preview.yml +398 -0
  17. package/templates/default/.github/workflows/deploy-stable-branches.yml +259 -0
  18. package/templates/default/.github/workflows/release-create-einja-app.yml +95 -0
  19. package/templates/default/.mcp.json +6 -9
  20. package/templates/default/CLAUDE.md +46 -9
  21. package/templates/default/README.md +5 -14
  22. package/templates/default/apps/admin/next.config.ts +11 -0
  23. package/templates/default/apps/admin/package.json +55 -0
  24. package/templates/default/apps/admin/postcss.config.cjs +5 -0
  25. package/templates/default/apps/admin/src/app/(auth)/forgot-password/page.tsx +97 -0
  26. package/templates/default/apps/admin/src/app/(auth)/layout.tsx +18 -0
  27. package/templates/default/apps/admin/src/app/(auth)/otp/page.tsx +121 -0
  28. package/templates/default/apps/admin/src/app/(auth)/sign-in/page.tsx +145 -0
  29. package/templates/default/apps/admin/src/app/(auth)/sign-up/page.tsx +199 -0
  30. package/templates/default/apps/admin/src/app/(errors)/401/page.tsx +27 -0
  31. package/templates/default/apps/admin/src/app/(errors)/403/page.tsx +28 -0
  32. package/templates/default/apps/admin/src/app/(errors)/500/page.tsx +29 -0
  33. package/templates/default/apps/admin/src/app/(errors)/layout.tsx +7 -0
  34. package/templates/default/apps/admin/src/app/(errors)/maintenance/page.tsx +25 -0
  35. package/templates/default/apps/admin/src/app/dashboard/_components/analytics-chart.tsx +68 -0
  36. package/templates/default/apps/admin/src/app/dashboard/_components/analytics.tsx +182 -0
  37. package/templates/default/apps/admin/src/app/dashboard/_components/dashboard-page.tsx +74 -0
  38. package/templates/default/apps/admin/src/app/dashboard/_components/metric-cards.tsx +49 -0
  39. package/templates/default/apps/admin/src/app/dashboard/_components/overview-chart.tsx +73 -0
  40. package/templates/default/apps/admin/src/app/dashboard/_components/recent-sales.tsx +75 -0
  41. package/templates/default/apps/admin/src/app/dashboard/apps/_components/apps-page.tsx +135 -0
  42. package/templates/default/apps/admin/src/app/dashboard/apps/page.tsx +10 -0
  43. package/templates/default/apps/admin/src/app/dashboard/chats/_components/chat-list.tsx +82 -0
  44. package/templates/default/apps/admin/src/app/dashboard/chats/_components/chat-messages.tsx +194 -0
  45. package/templates/default/apps/admin/src/app/dashboard/chats/_components/chats-page.tsx +99 -0
  46. package/templates/default/apps/admin/src/app/dashboard/chats/_components/new-chat.tsx +118 -0
  47. package/templates/default/apps/admin/src/app/dashboard/chats/page.tsx +10 -0
  48. package/templates/default/apps/admin/src/app/dashboard/layout.tsx +9 -0
  49. package/templates/default/apps/admin/src/app/dashboard/not-found.tsx +14 -0
  50. package/templates/default/apps/admin/src/app/dashboard/page.tsx +10 -0
  51. package/templates/default/apps/admin/src/app/dashboard/settings/_components/content-section.tsx +20 -0
  52. package/templates/default/apps/admin/src/app/dashboard/settings/_components/sidebar-nav.tsx +66 -0
  53. package/templates/default/apps/admin/src/app/dashboard/settings/account/page.tsx +173 -0
  54. package/templates/default/apps/admin/src/app/dashboard/settings/appearance/page.tsx +156 -0
  55. package/templates/default/apps/admin/src/app/dashboard/settings/display/page.tsx +125 -0
  56. package/templates/default/apps/admin/src/app/dashboard/settings/layout.tsx +30 -0
  57. package/templates/default/apps/admin/src/app/dashboard/settings/notifications/page.tsx +196 -0
  58. package/templates/default/apps/admin/src/app/dashboard/settings/page.tsx +5 -0
  59. package/templates/default/apps/admin/src/app/dashboard/settings/profile/page.tsx +176 -0
  60. package/templates/default/apps/admin/src/app/dashboard/tasks/_components/data-table-bulk-actions.tsx +183 -0
  61. package/templates/default/apps/admin/src/app/dashboard/tasks/_components/data-table-row-actions.tsx +79 -0
  62. package/templates/default/apps/admin/src/app/dashboard/tasks/_components/tasks-columns.tsx +107 -0
  63. package/templates/default/apps/admin/src/app/dashboard/tasks/_components/tasks-dialogs.tsx +71 -0
  64. package/templates/default/apps/admin/src/app/dashboard/tasks/_components/tasks-import-dialog.tsx +106 -0
  65. package/templates/default/apps/admin/src/app/dashboard/tasks/_components/tasks-multi-delete-dialog.tsx +90 -0
  66. package/templates/default/apps/admin/src/app/dashboard/tasks/_components/tasks-mutate-drawer.tsx +207 -0
  67. package/templates/default/apps/admin/src/app/dashboard/tasks/_components/tasks-page.tsx +31 -0
  68. package/templates/default/apps/admin/src/app/dashboard/tasks/_components/tasks-primary-buttons.tsx +19 -0
  69. package/templates/default/apps/admin/src/app/dashboard/tasks/_components/tasks-provider.tsx +37 -0
  70. package/templates/default/apps/admin/src/app/dashboard/tasks/_components/tasks-table.tsx +155 -0
  71. package/templates/default/apps/admin/src/app/dashboard/tasks/page.tsx +14 -0
  72. package/templates/default/apps/admin/src/app/dashboard/users/_components/data-table-bulk-actions.tsx +136 -0
  73. package/templates/default/apps/admin/src/app/dashboard/users/_components/data-table-row-actions.tsx +62 -0
  74. package/templates/default/apps/admin/src/app/dashboard/users/_components/users-action-dialog.tsx +297 -0
  75. package/templates/default/apps/admin/src/app/dashboard/users/_components/users-columns.tsx +121 -0
  76. package/templates/default/apps/admin/src/app/dashboard/users/_components/users-delete-dialog.tsx +72 -0
  77. package/templates/default/apps/admin/src/app/dashboard/users/_components/users-dialogs.tsx +49 -0
  78. package/templates/default/apps/admin/src/app/dashboard/users/_components/users-invite-dialog.tsx +139 -0
  79. package/templates/default/apps/admin/src/app/dashboard/users/_components/users-multi-delete-dialog.tsx +89 -0
  80. package/templates/default/apps/admin/src/app/dashboard/users/_components/users-page.tsx +30 -0
  81. package/templates/default/apps/admin/src/app/dashboard/users/_components/users-primary-buttons.tsx +19 -0
  82. package/templates/default/apps/admin/src/app/dashboard/users/_components/users-provider.tsx +35 -0
  83. package/templates/default/apps/admin/src/app/dashboard/users/_components/users-table.tsx +157 -0
  84. package/templates/default/apps/admin/src/app/dashboard/users/page.tsx +10 -0
  85. package/templates/default/apps/admin/src/app/globals.css +109 -0
  86. package/templates/default/apps/admin/src/app/layout.tsx +32 -0
  87. package/templates/default/apps/admin/src/app/not-found.tsx +14 -0
  88. package/templates/default/apps/admin/src/app/page.tsx +5 -0
  89. package/templates/default/apps/admin/src/components/layout/admin-layout.tsx +16 -0
  90. package/templates/default/apps/admin/src/components/layout/app-sidebar.tsx +52 -0
  91. package/templates/default/apps/admin/src/components/layout/nav-config.ts +131 -0
  92. package/templates/default/apps/admin/src/components/providers/theme-provider.tsx +10 -0
  93. package/templates/default/apps/admin/src/components/shared/long-text.tsx +78 -0
  94. package/templates/default/apps/admin/src/components/shared/search-input.tsx +16 -0
  95. package/templates/default/apps/admin/src/components/shared/select-dropdown.tsx +64 -0
  96. package/templates/default/apps/admin/src/data/apps.tsx +116 -0
  97. package/templates/default/apps/admin/src/data/chats.ts +114 -0
  98. package/templates/default/apps/admin/src/data/tasks.ts +114 -0
  99. package/templates/default/apps/admin/src/data/users.ts +90 -0
  100. package/templates/default/apps/admin/src/hooks/use-dialog-state.ts +17 -0
  101. package/templates/default/apps/admin/src/hooks/use-table-url-state.ts +243 -0
  102. package/templates/default/apps/admin/src/lib/show-submitted-data.tsx +12 -0
  103. package/templates/default/apps/admin/src/types/table.d.ts +9 -0
  104. package/templates/default/apps/admin/tsconfig.json +32 -0
  105. package/templates/default/apps/web/next.config.ts +1 -0
  106. package/templates/default/apps/web/package.json +0 -22
  107. package/templates/default/apps/web/postcss.config.cjs +0 -1
  108. package/templates/default/apps/web/src/app/(authenticated)/dashboard/page.tsx +4 -20
  109. package/templates/default/apps/web/src/app/(authenticated)/data/_components/UserTable.tsx +4 -4
  110. package/templates/default/apps/web/src/app/(authenticated)/data/page.tsx +1 -1
  111. package/templates/default/apps/web/src/app/(authenticated)/profile/page.tsx +1 -1
  112. package/templates/default/apps/web/src/app/error.tsx +8 -70
  113. package/templates/default/apps/web/src/app/global-error.tsx +8 -70
  114. package/templates/default/apps/web/src/app/globals.css +20 -0
  115. package/templates/default/apps/web/src/app/not-found.tsx +5 -39
  116. package/templates/default/apps/web/src/app/page.tsx +27 -203
  117. package/templates/default/apps/web/src/app/signin/page.tsx +27 -191
  118. package/templates/default/apps/web/src/app/signup/page.tsx +33 -240
  119. package/templates/default/apps/web/src/components/dashboard/dashboard-stats.tsx +11 -75
  120. package/templates/default/apps/web/src/components/shared/Sidebar.tsx +3 -3
  121. package/templates/default/apps/web/src/components/shared/header.tsx +17 -112
  122. package/templates/default/apps/web/tsconfig.json +0 -6
  123. package/templates/default/biome.json +1 -2
  124. package/templates/default/components.json +2 -2
  125. package/templates/default/docker-compose.yml +1 -1
  126. package/templates/default/gitignore +4 -0
  127. package/templates/default/package.json +1 -0
  128. package/templates/default/packages/admin-ui/catalog/catalog.css +54 -0
  129. package/templates/default/packages/admin-ui/catalog/catalog.tsx +401 -0
  130. package/templates/default/packages/admin-ui/catalog/index.html +12 -0
  131. package/templates/default/packages/admin-ui/catalog/main.tsx +9 -0
  132. package/templates/default/packages/admin-ui/components.json +21 -0
  133. package/templates/default/packages/admin-ui/package.json +105 -0
  134. package/templates/default/packages/admin-ui/src/command-menu/index.tsx +174 -0
  135. package/templates/default/packages/admin-ui/src/data-table/bulk-actions.tsx +215 -0
  136. package/templates/default/packages/admin-ui/src/data-table/column-header.tsx +73 -0
  137. package/templates/default/packages/admin-ui/src/data-table/data-table.tsx +127 -0
  138. package/templates/default/packages/admin-ui/src/data-table/faceted-filter.tsx +148 -0
  139. package/templates/default/packages/admin-ui/src/data-table/index.tsx +9 -0
  140. package/templates/default/packages/admin-ui/src/data-table/pagination.tsx +101 -0
  141. package/templates/default/packages/admin-ui/src/data-table/toolbar.tsx +87 -0
  142. package/templates/default/packages/admin-ui/src/data-table/view-options.tsx +57 -0
  143. package/templates/default/packages/admin-ui/src/hooks/use-mobile.tsx +23 -0
  144. package/templates/default/packages/admin-ui/src/layout/header.tsx +55 -0
  145. package/templates/default/packages/admin-ui/src/layout/index.ts +10 -0
  146. package/templates/default/packages/admin-ui/src/layout/main.tsx +23 -0
  147. package/templates/default/packages/admin-ui/src/layout/nav-group.tsx +111 -0
  148. package/templates/default/packages/admin-ui/src/layout/nav-user.tsx +114 -0
  149. package/templates/default/packages/admin-ui/src/layout/theme-switch.tsx +40 -0
  150. package/templates/default/packages/admin-ui/src/layout/types.ts +21 -0
  151. package/templates/default/packages/admin-ui/src/lib/utils.ts +6 -0
  152. package/templates/default/packages/admin-ui/src/styles/base.css +65 -0
  153. package/templates/default/packages/admin-ui/src/styles/tokens.css +91 -0
  154. package/templates/default/packages/admin-ui/src/tanstack-table.d.ts +10 -0
  155. package/templates/default/packages/admin-ui/src/ui/alert-dialog.tsx +157 -0
  156. package/templates/default/packages/admin-ui/src/ui/alert.tsx +66 -0
  157. package/templates/default/packages/admin-ui/src/ui/avatar.tsx +53 -0
  158. package/templates/default/packages/admin-ui/src/ui/badge.tsx +46 -0
  159. package/templates/default/packages/admin-ui/src/ui/breadcrumb.tsx +108 -0
  160. package/templates/default/packages/admin-ui/src/ui/button.tsx +59 -0
  161. package/templates/default/packages/admin-ui/src/ui/calendar.tsx +69 -0
  162. package/templates/default/packages/admin-ui/src/ui/card.tsx +92 -0
  163. package/templates/default/packages/admin-ui/src/ui/chart.tsx +345 -0
  164. package/templates/default/packages/admin-ui/src/ui/checkbox.tsx +32 -0
  165. package/templates/default/packages/admin-ui/src/ui/collapsible.tsx +27 -0
  166. package/templates/default/packages/admin-ui/src/ui/command.tsx +161 -0
  167. package/templates/default/packages/admin-ui/src/ui/confirm-dialog.tsx +72 -0
  168. package/templates/default/packages/admin-ui/src/ui/date-picker.tsx +53 -0
  169. package/templates/default/packages/admin-ui/src/ui/dialog.tsx +143 -0
  170. package/templates/default/packages/admin-ui/src/ui/dropdown-menu.tsx +257 -0
  171. package/templates/default/packages/admin-ui/src/ui/form.tsx +168 -0
  172. package/templates/default/packages/admin-ui/src/ui/input-otp.tsx +84 -0
  173. package/templates/default/packages/admin-ui/src/ui/input.tsx +21 -0
  174. package/templates/default/packages/admin-ui/src/ui/label.tsx +24 -0
  175. package/templates/default/packages/admin-ui/src/ui/pagination.tsx +126 -0
  176. package/templates/default/packages/admin-ui/src/ui/password-input.tsx +46 -0
  177. package/templates/default/packages/admin-ui/src/ui/popover.tsx +48 -0
  178. package/templates/default/packages/admin-ui/src/ui/progress.tsx +31 -0
  179. package/templates/default/packages/admin-ui/src/ui/radio-group.tsx +45 -0
  180. package/templates/default/packages/admin-ui/src/ui/scroll-area.tsx +52 -0
  181. package/templates/default/packages/admin-ui/src/ui/select.tsx +185 -0
  182. package/templates/default/packages/admin-ui/src/ui/separator.tsx +28 -0
  183. package/templates/default/packages/admin-ui/src/ui/sheet.tsx +149 -0
  184. package/templates/default/packages/admin-ui/src/ui/sidebar.tsx +728 -0
  185. package/templates/default/packages/admin-ui/src/ui/skeleton.tsx +13 -0
  186. package/templates/default/packages/admin-ui/src/ui/sonner.tsx +25 -0
  187. package/templates/default/packages/admin-ui/src/ui/switch.tsx +31 -0
  188. package/templates/default/packages/admin-ui/src/ui/table.tsx +116 -0
  189. package/templates/default/packages/admin-ui/src/ui/tabs.tsx +66 -0
  190. package/templates/default/packages/admin-ui/src/ui/textarea.tsx +18 -0
  191. package/templates/default/packages/admin-ui/src/ui/toggle-group.tsx +60 -0
  192. package/templates/default/packages/admin-ui/src/ui/toggle.tsx +44 -0
  193. package/templates/default/packages/admin-ui/src/ui/tooltip.tsx +61 -0
  194. package/templates/default/packages/admin-ui/tsconfig.json +8 -0
  195. package/templates/default/packages/admin-ui/vite.config.ts +11 -0
  196. package/templates/default/packages/config/package.json +0 -2
  197. package/templates/default/packages/server-core/package.json +1 -0
  198. package/templates/default/packages/ui/components.json +21 -0
  199. package/templates/default/packages/ui/package.json +42 -5
  200. package/templates/default/packages/ui/src/accordion.tsx +1 -1
  201. package/templates/default/packages/ui/src/alert-dialog.tsx +4 -4
  202. package/templates/default/packages/ui/src/alert.tsx +1 -1
  203. package/templates/default/packages/ui/src/avatar.tsx +1 -1
  204. package/templates/default/packages/ui/src/badge.tsx +1 -1
  205. package/templates/default/packages/ui/src/breadcrumb.tsx +1 -1
  206. package/templates/default/packages/ui/src/button.tsx +1 -1
  207. package/templates/default/packages/ui/src/card.tsx +1 -1
  208. package/templates/default/packages/ui/src/checkbox.tsx +1 -1
  209. package/templates/default/packages/ui/src/dialog.tsx +3 -3
  210. package/templates/default/packages/ui/src/drawer.tsx +3 -3
  211. package/templates/default/packages/ui/src/dropdown-menu.tsx +3 -3
  212. package/templates/default/packages/ui/src/form.tsx +2 -2
  213. package/templates/default/packages/ui/src/hover-card.tsx +2 -2
  214. package/templates/default/packages/ui/src/input.tsx +1 -1
  215. package/templates/default/packages/ui/src/label.tsx +1 -1
  216. package/templates/default/packages/ui/src/pagination.tsx +2 -2
  217. package/templates/default/packages/ui/src/popover.tsx +2 -2
  218. package/templates/default/packages/ui/src/progress.tsx +1 -1
  219. package/templates/default/packages/ui/src/select.tsx +2 -2
  220. package/templates/default/packages/ui/src/separator.tsx +1 -1
  221. package/templates/default/packages/ui/src/skeleton.tsx +1 -1
  222. package/templates/default/packages/ui/src/table.tsx +1 -1
  223. package/templates/default/packages/ui/src/tabs.tsx +1 -1
  224. package/templates/default/packages/ui/src/textarea.tsx +1 -1
  225. package/templates/default/packages/ui/src/tooltip.tsx +3 -3
  226. package/templates/default/packages/ui/src/typography.tsx +1 -1
  227. package/templates/default/packages/ui/tsconfig.json +1 -6
  228. package/templates/default/pnpm-lock.yaml +1319 -936
  229. package/templates/default/postcss.config.cjs +0 -1
  230. package/templates/default/turbo.json +11 -5
  231. package/templates/default/worktree.config.json +5 -0
  232. package/templates/default/.env.ci +0 -32
  233. package/templates/default/.github/workflows/ci.yml +0 -96
  234. package/templates/default/.github/workflows/preview-db.yml +0 -134
  235. package/templates/default/.playwright-mcp/dashboard.png +0 -0
  236. package/templates/default/.playwright-mcp/web-home.png +0 -0
  237. package/templates/default/apps/web/panda.config.ts +0 -114
  238. package/templates/default/apps/web/src/components/ui/accordion.tsx +0 -64
  239. package/templates/default/apps/web/src/components/ui/alert-dialog.tsx +0 -135
  240. package/templates/default/apps/web/src/components/ui/alert.tsx +0 -60
  241. package/templates/default/apps/web/src/components/ui/aspect-ratio.tsx +0 -9
  242. package/templates/default/apps/web/src/components/ui/avatar.tsx +0 -41
  243. package/templates/default/apps/web/src/components/ui/badge.tsx +0 -39
  244. package/templates/default/apps/web/src/components/ui/breadcrumb.tsx +0 -101
  245. package/templates/default/apps/web/src/components/ui/button.tsx +0 -56
  246. package/templates/default/apps/web/src/components/ui/card.tsx +0 -75
  247. package/templates/default/apps/web/src/components/ui/checkbox.tsx +0 -29
  248. package/templates/default/apps/web/src/components/ui/data-table.tsx +0 -189
  249. package/templates/default/apps/web/src/components/ui/dialog-hook.tsx +0 -210
  250. package/templates/default/apps/web/src/components/ui/dialog.tsx +0 -129
  251. package/templates/default/apps/web/src/components/ui/drawer.tsx +0 -124
  252. package/templates/default/apps/web/src/components/ui/dropdown-menu.tsx +0 -228
  253. package/templates/default/apps/web/src/components/ui/form.tsx +0 -152
  254. package/templates/default/apps/web/src/components/ui/hover-card.tsx +0 -38
  255. package/templates/default/apps/web/src/components/ui/input.tsx +0 -21
  256. package/templates/default/apps/web/src/components/ui/label.tsx +0 -21
  257. package/templates/default/apps/web/src/components/ui/pagination.tsx +0 -105
  258. package/templates/default/apps/web/src/components/ui/popover.tsx +0 -42
  259. package/templates/default/apps/web/src/components/ui/progress.tsx +0 -28
  260. package/templates/default/apps/web/src/components/ui/select.tsx +0 -170
  261. package/templates/default/apps/web/src/components/ui/separator.tsx +0 -28
  262. package/templates/default/apps/web/src/components/ui/skeleton.tsx +0 -13
  263. package/templates/default/apps/web/src/components/ui/sonner.tsx +0 -25
  264. package/templates/default/apps/web/src/components/ui/table.tsx +0 -92
  265. package/templates/default/apps/web/src/components/ui/tabs.tsx +0 -54
  266. package/templates/default/apps/web/src/components/ui/textarea.tsx +0 -18
  267. package/templates/default/apps/web/src/components/ui/tooltip.tsx +0 -57
  268. package/templates/default/apps/web/src/components/ui/typography.tsx +0 -158
  269. package/templates/default/packages/config/panda.config.ts +0 -114
  270. package/templates/default/panda.config.ts +0 -114
@@ -0,0 +1,401 @@
1
+ import "./catalog.css";
2
+ import { useState } from "react";
3
+
4
+ // UI Primitives - 相対パスでインポート(カタログはパッケージ内部なので)
5
+ import { Button } from "../src/ui/button";
6
+ import { Input } from "../src/ui/input";
7
+ import { Textarea } from "../src/ui/textarea";
8
+ import { Label } from "../src/ui/label";
9
+ import { Checkbox } from "../src/ui/checkbox";
10
+ import { Switch } from "../src/ui/switch";
11
+ import { RadioGroup, RadioGroupItem } from "../src/ui/radio-group";
12
+ import {
13
+ Select,
14
+ SelectContent,
15
+ SelectItem,
16
+ SelectTrigger,
17
+ SelectValue,
18
+ } from "../src/ui/select";
19
+ import {
20
+ Card,
21
+ CardContent,
22
+ CardDescription,
23
+ CardFooter,
24
+ CardHeader,
25
+ CardTitle,
26
+ } from "../src/ui/card";
27
+ import { Alert, AlertDescription, AlertTitle } from "../src/ui/alert";
28
+ import { Badge } from "../src/ui/badge";
29
+ import { Avatar, AvatarFallback, AvatarImage } from "../src/ui/avatar";
30
+ import { Skeleton } from "../src/ui/skeleton";
31
+ import { Progress } from "../src/ui/progress";
32
+ import {
33
+ Table,
34
+ TableBody,
35
+ TableCaption,
36
+ TableCell,
37
+ TableHead,
38
+ TableHeader,
39
+ TableRow,
40
+ } from "../src/ui/table";
41
+ import {
42
+ Breadcrumb,
43
+ BreadcrumbItem,
44
+ BreadcrumbLink,
45
+ BreadcrumbList,
46
+ BreadcrumbPage,
47
+ BreadcrumbSeparator,
48
+ } from "../src/ui/breadcrumb";
49
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from "../src/ui/tabs";
50
+ import {
51
+ Tooltip,
52
+ TooltipContent,
53
+ TooltipProvider,
54
+ TooltipTrigger,
55
+ } from "../src/ui/tooltip";
56
+ import {
57
+ Popover,
58
+ PopoverContent,
59
+ PopoverTrigger,
60
+ } from "../src/ui/popover";
61
+ import {
62
+ DropdownMenu,
63
+ DropdownMenuContent,
64
+ DropdownMenuItem,
65
+ DropdownMenuLabel,
66
+ DropdownMenuSeparator,
67
+ DropdownMenuTrigger,
68
+ } from "../src/ui/dropdown-menu";
69
+ import { Separator } from "../src/ui/separator";
70
+ import { ScrollArea } from "../src/ui/scroll-area";
71
+ import { AlertCircle, Terminal, Sun, Moon, ChevronRight } from "lucide-react";
72
+
73
+ function Section({
74
+ id,
75
+ title,
76
+ children,
77
+ }: {
78
+ id: string;
79
+ title: string;
80
+ children: React.ReactNode;
81
+ }) {
82
+ return (
83
+ <section id={id} className="space-y-4">
84
+ <h2 className="text-xl font-semibold border-b pb-2">{title}</h2>
85
+ {children}
86
+ </section>
87
+ );
88
+ }
89
+
90
+ function SubSection({
91
+ title,
92
+ children,
93
+ }: {
94
+ title: string;
95
+ children: React.ReactNode;
96
+ }) {
97
+ return (
98
+ <div className="space-y-2">
99
+ <h3 className="text-sm font-medium text-muted-foreground">{title}</h3>
100
+ <div className="flex flex-wrap items-center gap-3">{children}</div>
101
+ </div>
102
+ );
103
+ }
104
+
105
+ export function Catalog() {
106
+ const [isDark, setIsDark] = useState(false);
107
+
108
+ return (
109
+ <div className={isDark ? "dark" : ""}>
110
+ <div className="min-h-screen bg-background text-foreground">
111
+ <header className="sticky top-0 z-[var(--z-header)] border-b bg-background/95 backdrop-blur">
112
+ <div className="container mx-auto flex items-center justify-between px-6 py-4">
113
+ <h1 className="text-lg font-bold">@repo/admin-ui Component Catalog</h1>
114
+ <Button
115
+ variant="outline"
116
+ size="icon"
117
+ onClick={() => setIsDark(!isDark)}
118
+ >
119
+ {isDark ? <Sun className="h-4 w-4" /> : <Moon className="h-4 w-4" />}
120
+ </Button>
121
+ </div>
122
+ </header>
123
+
124
+ <nav className="sticky top-[65px] z-[var(--z-header)] border-b bg-background/95 backdrop-blur">
125
+ <div className="container mx-auto px-6 py-2">
126
+ <ScrollArea className="w-full">
127
+ <div className="flex gap-4 text-sm">
128
+ {[
129
+ "buttons",
130
+ "inputs",
131
+ "cards",
132
+ "data-display",
133
+ "feedback",
134
+ "navigation",
135
+ "overlay",
136
+ ].map((id) => (
137
+ <a
138
+ key={id}
139
+ href={`#${id}`}
140
+ className="text-muted-foreground hover:text-foreground whitespace-nowrap"
141
+ >
142
+ {id}
143
+ </a>
144
+ ))}
145
+ </div>
146
+ </ScrollArea>
147
+ </div>
148
+ </nav>
149
+
150
+ <main className="container mx-auto space-y-12 px-6 py-8">
151
+ {/* Buttons Section */}
152
+ <Section id="buttons" title="Buttons">
153
+ <SubSection title="Variants">
154
+ <Button variant="default">Default</Button>
155
+ <Button variant="secondary">Secondary</Button>
156
+ <Button variant="destructive">Destructive</Button>
157
+ <Button variant="outline">Outline</Button>
158
+ <Button variant="ghost">Ghost</Button>
159
+ <Button variant="link">Link</Button>
160
+ </SubSection>
161
+ <SubSection title="Sizes">
162
+ <Button size="sm">Small</Button>
163
+ <Button size="default">Default</Button>
164
+ <Button size="lg">Large</Button>
165
+ <Button size="icon"><ChevronRight className="h-4 w-4" /></Button>
166
+ </SubSection>
167
+ <SubSection title="States">
168
+ <Button disabled>Disabled</Button>
169
+ </SubSection>
170
+ </Section>
171
+
172
+ {/* Inputs & Forms Section */}
173
+ <Section id="inputs" title="Inputs & Forms">
174
+ <SubSection title="Input">
175
+ <Input placeholder="Default input" className="max-w-xs" />
176
+ <Input disabled placeholder="Disabled" className="max-w-xs" />
177
+ </SubSection>
178
+ <SubSection title="Textarea">
179
+ <Textarea placeholder="Enter text..." className="max-w-sm" />
180
+ </SubSection>
181
+ <SubSection title="Label + Input">
182
+ <div className="grid w-full max-w-sm gap-1.5">
183
+ <Label htmlFor="email">Email</Label>
184
+ <Input type="email" id="email" placeholder="Email" />
185
+ </div>
186
+ </SubSection>
187
+ <SubSection title="Checkbox">
188
+ <div className="flex items-center space-x-2">
189
+ <Checkbox id="terms" />
190
+ <Label htmlFor="terms">Accept terms</Label>
191
+ </div>
192
+ </SubSection>
193
+ <SubSection title="Switch">
194
+ <div className="flex items-center space-x-2">
195
+ <Switch id="mode" />
196
+ <Label htmlFor="mode">Toggle mode</Label>
197
+ </div>
198
+ </SubSection>
199
+ <SubSection title="Radio Group">
200
+ <RadioGroup defaultValue="option-1">
201
+ <div className="flex items-center space-x-2">
202
+ <RadioGroupItem value="option-1" id="option-1" />
203
+ <Label htmlFor="option-1">Option 1</Label>
204
+ </div>
205
+ <div className="flex items-center space-x-2">
206
+ <RadioGroupItem value="option-2" id="option-2" />
207
+ <Label htmlFor="option-2">Option 2</Label>
208
+ </div>
209
+ </RadioGroup>
210
+ </SubSection>
211
+ <SubSection title="Select">
212
+ <Select>
213
+ <SelectTrigger className="w-[180px]">
214
+ <SelectValue placeholder="Select..." />
215
+ </SelectTrigger>
216
+ <SelectContent>
217
+ <SelectItem value="1">Option 1</SelectItem>
218
+ <SelectItem value="2">Option 2</SelectItem>
219
+ <SelectItem value="3">Option 3</SelectItem>
220
+ </SelectContent>
221
+ </Select>
222
+ </SubSection>
223
+ </Section>
224
+
225
+ {/* Cards & Containers Section */}
226
+ <Section id="cards" title="Cards & Containers">
227
+ <SubSection title="Card">
228
+ <Card className="w-[350px]">
229
+ <CardHeader>
230
+ <CardTitle>Card Title</CardTitle>
231
+ <CardDescription>Card description text</CardDescription>
232
+ </CardHeader>
233
+ <CardContent>
234
+ <p>Card content goes here.</p>
235
+ </CardContent>
236
+ <CardFooter>
237
+ <Button>Action</Button>
238
+ </CardFooter>
239
+ </Card>
240
+ </SubSection>
241
+ <SubSection title="Alert">
242
+ <div className="space-y-3 w-full max-w-md">
243
+ <Alert>
244
+ <Terminal className="h-4 w-4" />
245
+ <AlertTitle>Default Alert</AlertTitle>
246
+ <AlertDescription>This is a default alert.</AlertDescription>
247
+ </Alert>
248
+ <Alert variant="destructive">
249
+ <AlertCircle className="h-4 w-4" />
250
+ <AlertTitle>Error</AlertTitle>
251
+ <AlertDescription>Something went wrong.</AlertDescription>
252
+ </Alert>
253
+ </div>
254
+ </SubSection>
255
+ <SubSection title="Separator">
256
+ <div className="w-full max-w-md space-y-1">
257
+ <p className="text-sm">Above</p>
258
+ <Separator />
259
+ <p className="text-sm">Below</p>
260
+ </div>
261
+ </SubSection>
262
+ </Section>
263
+
264
+ {/* Data Display Section */}
265
+ <Section id="data-display" title="Data Display">
266
+ <SubSection title="Badge">
267
+ <Badge>Default</Badge>
268
+ <Badge variant="secondary">Secondary</Badge>
269
+ <Badge variant="destructive">Destructive</Badge>
270
+ <Badge variant="outline">Outline</Badge>
271
+ </SubSection>
272
+ <SubSection title="Avatar">
273
+ <Avatar>
274
+ <AvatarImage src="https://github.com/shadcn.png" alt="@shadcn" />
275
+ <AvatarFallback>CN</AvatarFallback>
276
+ </Avatar>
277
+ <Avatar>
278
+ <AvatarFallback>AB</AvatarFallback>
279
+ </Avatar>
280
+ </SubSection>
281
+ <SubSection title="Skeleton">
282
+ <div className="flex items-center space-x-4">
283
+ <Skeleton className="h-12 w-12 rounded-full" />
284
+ <div className="space-y-2">
285
+ <Skeleton className="h-4 w-[250px]" />
286
+ <Skeleton className="h-4 w-[200px]" />
287
+ </div>
288
+ </div>
289
+ </SubSection>
290
+ <SubSection title="Progress">
291
+ <Progress value={60} className="w-[300px]" />
292
+ </SubSection>
293
+ <SubSection title="Table">
294
+ <Table>
295
+ <TableCaption>Sample data</TableCaption>
296
+ <TableHeader>
297
+ <TableRow>
298
+ <TableHead>Name</TableHead>
299
+ <TableHead>Status</TableHead>
300
+ <TableHead className="text-right">Amount</TableHead>
301
+ </TableRow>
302
+ </TableHeader>
303
+ <TableBody>
304
+ <TableRow>
305
+ <TableCell>Alice</TableCell>
306
+ <TableCell>Active</TableCell>
307
+ <TableCell className="text-right">$250.00</TableCell>
308
+ </TableRow>
309
+ <TableRow>
310
+ <TableCell>Bob</TableCell>
311
+ <TableCell>Pending</TableCell>
312
+ <TableCell className="text-right">$150.00</TableCell>
313
+ </TableRow>
314
+ </TableBody>
315
+ </Table>
316
+ </SubSection>
317
+ </Section>
318
+
319
+ {/* Navigation Section */}
320
+ <Section id="navigation" title="Navigation">
321
+ <SubSection title="Breadcrumb">
322
+ <Breadcrumb>
323
+ <BreadcrumbList>
324
+ <BreadcrumbItem>
325
+ <BreadcrumbLink href="/">Home</BreadcrumbLink>
326
+ </BreadcrumbItem>
327
+ <BreadcrumbSeparator />
328
+ <BreadcrumbItem>
329
+ <BreadcrumbLink href="/dashboard">Dashboard</BreadcrumbLink>
330
+ </BreadcrumbItem>
331
+ <BreadcrumbSeparator />
332
+ <BreadcrumbItem>
333
+ <BreadcrumbPage>Settings</BreadcrumbPage>
334
+ </BreadcrumbItem>
335
+ </BreadcrumbList>
336
+ </Breadcrumb>
337
+ </SubSection>
338
+ <SubSection title="Tabs">
339
+ <Tabs defaultValue="tab1" className="w-[400px]">
340
+ <TabsList>
341
+ <TabsTrigger value="tab1">Tab 1</TabsTrigger>
342
+ <TabsTrigger value="tab2">Tab 2</TabsTrigger>
343
+ <TabsTrigger value="tab3">Tab 3</TabsTrigger>
344
+ </TabsList>
345
+ <TabsContent value="tab1">Content for tab 1</TabsContent>
346
+ <TabsContent value="tab2">Content for tab 2</TabsContent>
347
+ <TabsContent value="tab3">Content for tab 3</TabsContent>
348
+ </Tabs>
349
+ </SubSection>
350
+ </Section>
351
+
352
+ {/* Overlay Section */}
353
+ <Section id="overlay" title="Overlay">
354
+ <SubSection title="Tooltip">
355
+ <TooltipProvider>
356
+ <Tooltip>
357
+ <TooltipTrigger asChild>
358
+ <Button variant="outline">Hover me</Button>
359
+ </TooltipTrigger>
360
+ <TooltipContent>
361
+ <p>Tooltip content</p>
362
+ </TooltipContent>
363
+ </Tooltip>
364
+ </TooltipProvider>
365
+ </SubSection>
366
+ <SubSection title="Popover">
367
+ <Popover>
368
+ <PopoverTrigger asChild>
369
+ <Button variant="outline">Open Popover</Button>
370
+ </PopoverTrigger>
371
+ <PopoverContent className="w-80">
372
+ <div className="grid gap-4">
373
+ <h4 className="font-medium leading-none">Popover Title</h4>
374
+ <p className="text-sm text-muted-foreground">Popover content here.</p>
375
+ </div>
376
+ </PopoverContent>
377
+ </Popover>
378
+ </SubSection>
379
+ <SubSection title="Dropdown Menu">
380
+ <DropdownMenu>
381
+ <DropdownMenuTrigger asChild>
382
+ <Button variant="outline">Open Menu</Button>
383
+ </DropdownMenuTrigger>
384
+ <DropdownMenuContent>
385
+ <DropdownMenuLabel>Actions</DropdownMenuLabel>
386
+ <DropdownMenuSeparator />
387
+ <DropdownMenuItem>Edit</DropdownMenuItem>
388
+ <DropdownMenuItem>Delete</DropdownMenuItem>
389
+ </DropdownMenuContent>
390
+ </DropdownMenu>
391
+ </SubSection>
392
+ </Section>
393
+ </main>
394
+
395
+ <footer className="border-t py-6 text-center text-sm text-muted-foreground">
396
+ @repo/admin-ui Component Catalog
397
+ </footer>
398
+ </div>
399
+ </div>
400
+ );
401
+ }
@@ -0,0 +1,12 @@
1
+ <!doctype html>
2
+ <html lang="ja">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>@repo/admin-ui Component Catalog</title>
7
+ </head>
8
+ <body>
9
+ <div id="root"></div>
10
+ <script type="module" src="./main.tsx"></script>
11
+ </body>
12
+ </html>
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ import ReactDOM from "react-dom/client";
3
+ import { Catalog } from "./catalog";
4
+
5
+ ReactDOM.createRoot(document.getElementById("root")!).render(
6
+ <React.StrictMode>
7
+ <Catalog />
8
+ </React.StrictMode>
9
+ );
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema.json",
3
+ "style": "new-york",
4
+ "rsc": false,
5
+ "tsx": true,
6
+ "tailwind": {
7
+ "config": "",
8
+ "css": "src/styles/base.css",
9
+ "baseColor": "neutral",
10
+ "cssVariables": true,
11
+ "prefix": ""
12
+ },
13
+ "aliases": {
14
+ "components": "./src",
15
+ "utils": "./src/lib/utils",
16
+ "ui": "./src/ui",
17
+ "lib": "./src/lib",
18
+ "hooks": "./src/hooks"
19
+ },
20
+ "iconLibrary": "lucide"
21
+ }
@@ -0,0 +1,105 @@
1
+ {
2
+ "name": "@repo/admin-ui",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "scripts": {
6
+ "catalog": "vite --config vite.config.ts"
7
+ },
8
+ "exports": {
9
+ "./styles/tokens.css": "./src/styles/tokens.css",
10
+ "./styles/base.css": "./src/styles/base.css",
11
+ "./lib/utils": "./src/lib/utils.ts",
12
+ "./hooks/use-mobile": "./src/hooks/use-mobile.tsx",
13
+ "./ui/alert": "./src/ui/alert.tsx",
14
+ "./ui/alert-dialog": "./src/ui/alert-dialog.tsx",
15
+ "./ui/avatar": "./src/ui/avatar.tsx",
16
+ "./ui/badge": "./src/ui/badge.tsx",
17
+ "./ui/breadcrumb": "./src/ui/breadcrumb.tsx",
18
+ "./ui/button": "./src/ui/button.tsx",
19
+ "./ui/calendar": "./src/ui/calendar.tsx",
20
+ "./ui/card": "./src/ui/card.tsx",
21
+ "./ui/checkbox": "./src/ui/checkbox.tsx",
22
+ "./ui/collapsible": "./src/ui/collapsible.tsx",
23
+ "./ui/command": "./src/ui/command.tsx",
24
+ "./ui/confirm-dialog": "./src/ui/confirm-dialog.tsx",
25
+ "./ui/date-picker": "./src/ui/date-picker.tsx",
26
+ "./ui/dialog": "./src/ui/dialog.tsx",
27
+ "./ui/dropdown-menu": "./src/ui/dropdown-menu.tsx",
28
+ "./ui/form": "./src/ui/form.tsx",
29
+ "./ui/input": "./src/ui/input.tsx",
30
+ "./ui/input-otp": "./src/ui/input-otp.tsx",
31
+ "./ui/label": "./src/ui/label.tsx",
32
+ "./ui/pagination": "./src/ui/pagination.tsx",
33
+ "./ui/password-input": "./src/ui/password-input.tsx",
34
+ "./ui/popover": "./src/ui/popover.tsx",
35
+ "./ui/progress": "./src/ui/progress.tsx",
36
+ "./ui/radio-group": "./src/ui/radio-group.tsx",
37
+ "./ui/scroll-area": "./src/ui/scroll-area.tsx",
38
+ "./ui/select": "./src/ui/select.tsx",
39
+ "./ui/separator": "./src/ui/separator.tsx",
40
+ "./ui/sheet": "./src/ui/sheet.tsx",
41
+ "./ui/sidebar": "./src/ui/sidebar.tsx",
42
+ "./ui/skeleton": "./src/ui/skeleton.tsx",
43
+ "./ui/sonner": "./src/ui/sonner.tsx",
44
+ "./ui/switch": "./src/ui/switch.tsx",
45
+ "./ui/table": "./src/ui/table.tsx",
46
+ "./ui/tabs": "./src/ui/tabs.tsx",
47
+ "./ui/textarea": "./src/ui/textarea.tsx",
48
+ "./ui/toggle": "./src/ui/toggle.tsx",
49
+ "./ui/toggle-group": "./src/ui/toggle-group.tsx",
50
+ "./ui/tooltip": "./src/ui/tooltip.tsx",
51
+ "./ui/chart": "./src/ui/chart.tsx",
52
+ "./layout": "./src/layout/index.ts",
53
+ "./data-table": "./src/data-table/index.tsx",
54
+ "./command-menu": "./src/command-menu/index.tsx"
55
+ },
56
+ "dependencies": {
57
+ "@radix-ui/react-alert-dialog": "^1.1.14",
58
+ "@radix-ui/react-avatar": "^1.1.10",
59
+ "@radix-ui/react-checkbox": "^1.3.2",
60
+ "@radix-ui/react-collapsible": "^1.1.11",
61
+ "@radix-ui/react-dialog": "^1.1.14",
62
+ "@radix-ui/react-dropdown-menu": "^2.1.15",
63
+ "@radix-ui/react-icons": "^1.3.2",
64
+ "@radix-ui/react-label": "^2.1.7",
65
+ "@radix-ui/react-popover": "^1.1.14",
66
+ "@radix-ui/react-progress": "^1.1.7",
67
+ "@radix-ui/react-radio-group": "^1.2.7",
68
+ "@radix-ui/react-scroll-area": "^1.2.8",
69
+ "@radix-ui/react-select": "^2.2.5",
70
+ "@radix-ui/react-separator": "^1.1.7",
71
+ "@radix-ui/react-slot": "^1.2.3",
72
+ "@radix-ui/react-switch": "^1.1.7",
73
+ "@radix-ui/react-tabs": "^1.1.12",
74
+ "@radix-ui/react-toggle": "^1.1.4",
75
+ "@radix-ui/react-toggle-group": "^1.1.4",
76
+ "@radix-ui/react-tooltip": "^1.2.7",
77
+ "@tanstack/react-table": "^8.21.3",
78
+ "class-variance-authority": "^0.7.1",
79
+ "clsx": "^2.1.1",
80
+ "cmdk": "^1.1.1",
81
+ "date-fns": "^4.1.0",
82
+ "input-otp": "^1.4.2",
83
+ "lucide-react": "^0.523.0",
84
+ "next": "^15.3.3",
85
+ "next-themes": "^0.4.6",
86
+ "react": "^19.0.0",
87
+ "react-day-picker": "^9.7.0",
88
+ "react-dom": "^19.0.0",
89
+ "react-hook-form": "^7.59.0",
90
+ "recharts": "^2.15.0",
91
+ "sonner": "^2.0.5",
92
+ "tailwind-merge": "^3.3.1",
93
+ "vaul": "^1.1.2"
94
+ },
95
+ "devDependencies": {
96
+ "@repo/config": "workspace:*",
97
+ "@tailwindcss/vite": "^4.1.10",
98
+ "@types/react": "^19",
99
+ "@types/react-dom": "^19",
100
+ "@vitejs/plugin-react": "^4.5.2",
101
+ "tw-animate-css": "^1.3.4",
102
+ "typescript": "^5",
103
+ "vite": "^6.3.5"
104
+ }
105
+ }