@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.
Files changed (40) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +11 -10
  3. package/package.json +3 -3
  4. package/template/apps/start/package.json +1 -1
  5. package/template/apps/start/src/components/dashboard/account-button.tsx +33 -15
  6. package/template/apps/start/src/components/dashboard/dashboard-shell.tsx +590 -0
  7. package/template/apps/start/src/routes/dashboard.tsx +215 -249
  8. package/template/apps/start/src/styles.css +53 -0
  9. package/template/apps/web/package.json +1 -1
  10. package/template/apps/web/src/app/dashboard/_components/account-button.tsx +33 -15
  11. package/template/apps/web/src/app/dashboard/_components/dashboard-palette.css +52 -0
  12. package/template/apps/web/src/app/dashboard/_components/dashboard-shell.tsx +594 -0
  13. package/template/apps/web/src/app/dashboard/page.tsx +214 -248
  14. package/template/e2e/settings.spec.ts +3 -3
  15. package/template/package.json +1 -1
  16. package/template/packages/auth/package.json +1 -1
  17. package/template/packages/auth-better-auth/package.json +1 -1
  18. package/template/packages/auth-supabase/package.json +1 -1
  19. package/template/packages/cache/package.json +1 -1
  20. package/template/packages/cache-redis/package.json +1 -1
  21. package/template/packages/core/package.json +1 -1
  22. package/template/packages/db/package.json +1 -1
  23. package/template/packages/email/package.json +1 -1
  24. package/template/packages/email-resend/package.json +1 -1
  25. package/template/packages/email-smtp/package.json +1 -1
  26. package/template/packages/jobs/package.json +1 -1
  27. package/template/packages/jobs-pg-boss/package.json +1 -1
  28. package/template/packages/local-db/package.json +1 -1
  29. package/template/packages/observability/package.json +1 -1
  30. package/template/packages/observability-otel/package.json +1 -1
  31. package/template/packages/observability-sentry/package.json +1 -1
  32. package/template/packages/payments/package.json +1 -1
  33. package/template/packages/payments-stripe/package.json +1 -1
  34. package/template/packages/storage/package.json +1 -1
  35. package/template/packages/storage-s3/package.json +1 -1
  36. package/template/packages/storage-supabase/package.json +1 -1
  37. package/template/packages/ui/package.json +1 -1
  38. package/template.lock.json +5 -4
  39. package/template/apps/start/src/components/dashboard/app-sidebar.tsx +0 -90
  40. 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.14.0
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.14.0 # or a specific tag, branch, or commit
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.16.0
180
+ create-clubedge-app v0.17.0
181
181
  |
182
182
  v
183
- Clubedge Starter v0.14.0
184
- commit 2219a21c2eb237b7d8ee004ea8bbeb098b70106e
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.16.0` | `clubedge-starter@v0.14.0` | The CLI's required, tested default |
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.14.0` tag is expected to resolve to commit
196
- `2219a21c2eb237b7d8ee004ea8bbeb098b70106e`. The CLI verifies this before
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.14.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.
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.14.0`, and publish the Starter release.
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.16.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.14.0",
26
- "starterCommit": "2219a21c2eb237b7d8ee004ea8bbeb098b70106e"
25
+ "starterRef": "v0.15.0",
26
+ "starterCommit": "239f9e9fd575165d72f70a91592cafbd43bb7574"
27
27
  },
28
28
  "license": "Apache-2.0",
29
29
  "repository": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clubedge/start",
3
- "version": "0.14.0",
3
+ "version": "0.15.0",
4
4
  "private": true,
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -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 to="/login" className={buttonVariants({ className, size: "sm", variant: "outline" })}>
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("flex items-center gap-2", className)}>
23
- <Link to="/settings" className={buttonVariants({ size: "sm", variant: "ghost" })}>
24
- Settings
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" className="flex-1" method="post">
27
- <Button
28
- className="w-full"
29
- size="sm"
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
  );