@clubedge/create-clubedge-app 0.16.0 → 0.17.0
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/CHANGELOG.md +5 -0
- package/README.md +11 -10
- package/package.json +3 -3
- package/template/apps/start/package.json +1 -1
- package/template/apps/start/src/components/dashboard/account-button.tsx +33 -15
- package/template/apps/start/src/components/dashboard/dashboard-shell.tsx +590 -0
- package/template/apps/start/src/routes/dashboard.tsx +215 -249
- package/template/apps/start/src/styles.css +53 -0
- package/template/apps/web/package.json +1 -1
- package/template/apps/web/src/app/dashboard/_components/account-button.tsx +33 -15
- package/template/apps/web/src/app/dashboard/_components/dashboard-palette.css +52 -0
- package/template/apps/web/src/app/dashboard/_components/dashboard-shell.tsx +594 -0
- package/template/apps/web/src/app/dashboard/page.tsx +214 -248
- package/template/e2e/settings.spec.ts +3 -3
- package/template/package.json +1 -1
- package/template/packages/auth/package.json +1 -1
- package/template/packages/auth-better-auth/package.json +1 -1
- package/template/packages/auth-supabase/package.json +1 -1
- package/template/packages/cache/package.json +1 -1
- package/template/packages/cache-redis/package.json +1 -1
- package/template/packages/core/package.json +1 -1
- package/template/packages/db/package.json +1 -1
- package/template/packages/email/package.json +1 -1
- package/template/packages/email-resend/package.json +1 -1
- package/template/packages/email-smtp/package.json +1 -1
- package/template/packages/jobs/package.json +1 -1
- package/template/packages/jobs-pg-boss/package.json +1 -1
- package/template/packages/local-db/package.json +1 -1
- package/template/packages/observability/package.json +1 -1
- package/template/packages/observability-otel/package.json +1 -1
- package/template/packages/observability-sentry/package.json +1 -1
- package/template/packages/payments/package.json +1 -1
- package/template/packages/payments-stripe/package.json +1 -1
- package/template/packages/storage/package.json +1 -1
- package/template/packages/storage-s3/package.json +1 -1
- package/template/packages/storage-supabase/package.json +1 -1
- package/template/packages/ui/package.json +1 -1
- package/template.lock.json +5 -4
- package/template/apps/start/src/components/dashboard/app-sidebar.tsx +0 -90
- package/template/apps/web/src/app/dashboard/_components/app-sidebar.tsx +0 -91
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `create-clubedge-app` are documented here.
|
|
4
4
|
|
|
5
|
+
## 0.17.0
|
|
6
|
+
|
|
7
|
+
- Default to Starter `v0.15.0`, whose dashboard has the docs' layout and colors in both frameworks: a collapsible sidebar with a section switcher, the dashboard's sections, resources, and an account card with Settings and Sign out; the page in a rounded card that scrolls on its own; a top bar with Home, GitHub, and a light and dark switch; and a drawer on phones.
|
|
8
|
+
- None of this needs CLI code: it all comes from the Starter.
|
|
9
|
+
|
|
5
10
|
## 0.16.0
|
|
6
11
|
|
|
7
12
|
- Default to Starter `v0.14.0`, which adds:
|
package/README.md
CHANGED
|
@@ -127,7 +127,7 @@ pnpm dlx @clubedge/create-clubedge-app my-app --yes --no-git --framework tanstac
|
|
|
127
127
|
pnpm dlx @clubedge/create-clubedge-app my-app --ref main
|
|
128
128
|
|
|
129
129
|
# Reproduce a specific Starter release or commit
|
|
130
|
-
pnpm dlx @clubedge/create-clubedge-app my-app --ref v0.
|
|
130
|
+
pnpm dlx @clubedge/create-clubedge-app my-app --ref v0.15.0
|
|
131
131
|
pnpm dlx @clubedge/create-clubedge-app my-app --ref <commit-sha>
|
|
132
132
|
|
|
133
133
|
# Test local Starter changes before releasing them
|
|
@@ -146,7 +146,7 @@ pnpm clubedge add email resend payments stripe # several modules as
|
|
|
146
146
|
pnpm clubedge remove storage payments
|
|
147
147
|
pnpm dlx @clubedge/create-clubedge-app add infra local --dry-run
|
|
148
148
|
pnpm dlx @clubedge/create-clubedge-app@latest upgrade # to the newest CLI's Starter release
|
|
149
|
-
pnpm dlx @clubedge/create-clubedge-app upgrade --ref v0.
|
|
149
|
+
pnpm dlx @clubedge/create-clubedge-app upgrade --ref v0.15.0 # or a specific tag, branch, or commit
|
|
150
150
|
```
|
|
151
151
|
|
|
152
152
|
The CLI renders the project twice, from the Starter commit and modules recorded in your `package.json` and from the new state, and merges the difference into your project. The new state has other modules for `add` and `remove`, and the newer Starter with the same modules for `upgrade`. Modules a newer Starter introduces start as `none` where possible, so an upgrade never adds a service on its own.
|
|
@@ -177,27 +177,27 @@ pnpm clubedge doctor # Node.js, pnpm, dependencies, lockfile, env file, and p
|
|
|
177
177
|
Each CLI release is tested against one specific Starter release:
|
|
178
178
|
|
|
179
179
|
```text
|
|
180
|
-
create-clubedge-app v0.
|
|
180
|
+
create-clubedge-app v0.17.0
|
|
181
181
|
|
|
|
182
182
|
v
|
|
183
|
-
Clubedge Starter v0.
|
|
184
|
-
commit
|
|
183
|
+
Clubedge Starter v0.15.0
|
|
184
|
+
commit 239f9e9fd575165d72f70a91592cafbd43bb7574
|
|
185
185
|
```
|
|
186
186
|
|
|
187
187
|
The current relationship is:
|
|
188
188
|
|
|
189
189
|
| CLI release | Default Starter release | Meaning |
|
|
190
190
|
| --- | --- | --- |
|
|
191
|
-
| `create-clubedge-app@0.
|
|
191
|
+
| `create-clubedge-app@0.17.0` | `clubedge-starter@v0.15.0` | The CLI's required, tested default |
|
|
192
192
|
|
|
193
193
|
This means the same CLI version always scaffolds the same Starter revision by default. The CLI does not silently follow Starter `main`.
|
|
194
194
|
|
|
195
|
-
The `v0.
|
|
196
|
-
`
|
|
195
|
+
The `v0.15.0` tag is expected to resolve to commit
|
|
196
|
+
`239f9e9fd575165d72f70a91592cafbd43bb7574`. The CLI verifies this before
|
|
197
197
|
scaffolding with the default reference and fails rather than silently using a
|
|
198
198
|
moved tag.
|
|
199
199
|
|
|
200
|
-
When the Starter changes, its maintainers first publish a new versioned release, such as `v0.
|
|
200
|
+
When the Starter changes, its maintainers first publish a new versioned release, such as `v0.15.0`. The CLI is then updated to use that release, all generated-project checks must pass, and a new CLI version is published. This keeps Starter and CLI releases independently versioned while preserving a tested compatibility relationship.
|
|
201
201
|
|
|
202
202
|
Every generated project records its CLI version, Starter repository, Starter ref, Starter commit, framework, and modules in `package.json` and `README.md`.
|
|
203
203
|
|
|
@@ -252,7 +252,7 @@ CI packs the CLI with `npm pack`, scaffolds clean projects from the packed tarba
|
|
|
252
252
|
1. Make and validate changes in `clubedge-starter`.
|
|
253
253
|
2. Run lint, typecheck, unit tests, browser tests, and production build.
|
|
254
254
|
3. Update the Starter package versions.
|
|
255
|
-
4. Commit `main`, create a release tag such as `v0.
|
|
255
|
+
4. Commit `main`, create a release tag such as `v0.15.0`, and publish the Starter release.
|
|
256
256
|
|
|
257
257
|
### CLI maintainers
|
|
258
258
|
|
|
@@ -278,6 +278,7 @@ Each phase ends with a Starter release and a CLI release pinned to it. The full
|
|
|
278
278
|
| 0.14.0 | v0.13.0 | Observability |
|
|
279
279
|
| 0.15.0 | v0.13.1 | `status` and `doctor`, several modules in one change, conflict and upgrade summaries, macOS CI |
|
|
280
280
|
| 0.16.0 | v0.14.0 | Account settings page, browser error reporting and Sentry source maps, auth emails through the jobs queue |
|
|
281
|
+
| 0.17.0 | v0.15.0 | Docs-style dashboard: sidebar with a section switcher and account card, page in a scrolling card, phone drawer |
|
|
281
282
|
| next | | Show the Starter's version of a conflicted file next to yours |
|
|
282
283
|
|
|
283
284
|
## Community
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@clubedge/create-clubedge-app",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.0",
|
|
4
4
|
"description": "Create a Next.js or TanStack Start application from the Clubedge Starter reference implementation.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "pnpm@10.9.0",
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
},
|
|
23
23
|
"clubedge": {
|
|
24
24
|
"starterRepository": "Clubedge/clubedge-starter",
|
|
25
|
-
"starterRef": "v0.
|
|
26
|
-
"starterCommit": "
|
|
25
|
+
"starterRef": "v0.15.0",
|
|
26
|
+
"starterCommit": "239f9e9fd575165d72f70a91592cafbd43bb7574"
|
|
27
27
|
},
|
|
28
28
|
"license": "Apache-2.0",
|
|
29
29
|
"repository": {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { LogIn, LogOut, Settings2 } from "lucide-react";
|
|
1
2
|
import { Link } from "@tanstack/react-router";
|
|
2
3
|
|
|
3
4
|
import type { AuthUser } from "@/server/auth";
|
|
4
|
-
import { Button, buttonVariants } from "@clubedge/ui/components/button";
|
|
5
5
|
import { cn } from "@clubedge/ui/lib/utils";
|
|
6
6
|
|
|
7
7
|
type AccountButtonProps = {
|
|
@@ -9,30 +9,48 @@ type AccountButtonProps = {
|
|
|
9
9
|
className?: string;
|
|
10
10
|
};
|
|
11
11
|
|
|
12
|
+
// The account card at the bottom of the dashboard sidebar, styled like its section switcher.
|
|
13
|
+
const card = "flex items-center rounded-xl border bg-secondary/50 text-sm";
|
|
14
|
+
const iconButton =
|
|
15
|
+
"inline-flex size-7 shrink-0 items-center justify-center rounded-md text-muted-foreground outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-ring [&_svg]:size-4";
|
|
16
|
+
|
|
12
17
|
export function AccountButton({ user, className }: AccountButtonProps) {
|
|
13
18
|
if (!user) {
|
|
14
19
|
return (
|
|
15
|
-
<Link
|
|
20
|
+
<Link
|
|
21
|
+
to="/login"
|
|
22
|
+
className={cn(
|
|
23
|
+
card,
|
|
24
|
+
"h-10 justify-center gap-2 font-medium outline-none transition-colors hover:bg-accent focus-visible:ring-2 focus-visible:ring-ring [&_svg]:size-4",
|
|
25
|
+
className,
|
|
26
|
+
)}
|
|
27
|
+
>
|
|
28
|
+
<LogIn aria-hidden="true" />
|
|
16
29
|
Sign in
|
|
17
30
|
</Link>
|
|
18
31
|
);
|
|
19
32
|
}
|
|
20
33
|
|
|
34
|
+
const email = user.email ?? "Signed in";
|
|
35
|
+
|
|
21
36
|
return (
|
|
22
|
-
<div className={cn("
|
|
23
|
-
<
|
|
24
|
-
|
|
37
|
+
<div className={cn(card, "h-12 gap-2.5 ps-2 pe-1.5", className)}>
|
|
38
|
+
<span
|
|
39
|
+
aria-hidden="true"
|
|
40
|
+
className="grid size-7 shrink-0 place-items-center rounded-full bg-primary/15 text-xs font-semibold uppercase text-primary"
|
|
41
|
+
>
|
|
42
|
+
{email.charAt(0)}
|
|
43
|
+
</span>
|
|
44
|
+
<span className="min-w-0 flex-1 truncate font-medium" title={email}>
|
|
45
|
+
{email}
|
|
46
|
+
</span>
|
|
47
|
+
<Link to="/settings" aria-label="Settings" title="Settings" className={iconButton}>
|
|
48
|
+
<Settings2 aria-hidden="true" />
|
|
25
49
|
</Link>
|
|
26
|
-
<form action="/auth/sign-out"
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
title={user.email ?? undefined}
|
|
31
|
-
type="submit"
|
|
32
|
-
variant="outline"
|
|
33
|
-
>
|
|
34
|
-
Sign out
|
|
35
|
-
</Button>
|
|
50
|
+
<form action="/auth/sign-out" method="post">
|
|
51
|
+
<button type="submit" aria-label="Sign out" title="Sign out" className={iconButton}>
|
|
52
|
+
<LogOut aria-hidden="true" />
|
|
53
|
+
</button>
|
|
36
54
|
</form>
|
|
37
55
|
</div>
|
|
38
56
|
);
|