@cimplify/cli 0.7.15 → 0.7.17

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 (98) hide show
  1. package/dist/{add-A5PYZXDS.mjs → add-VSGQEUDS.mjs} +1 -1
  2. package/dist/{chunk-DY5TIVWB.mjs → chunk-NIDPHJ45.mjs} +1 -1
  3. package/dist/{chunk-WNVMNOW7.mjs → chunk-OJRMBHMT.mjs} +1 -1
  4. package/dist/{chunk-U7L3GR3Y.mjs → chunk-XKO2EB5J.mjs} +16 -24
  5. package/dist/dispatcher.mjs +9 -9
  6. package/dist/{doctor-W2BBP6OL.mjs → doctor-AMR3MFFS.mjs} +2 -2
  7. package/dist/{explain-N6DBSJHA.mjs → explain-6LYQ2OL4.mjs} +1 -1
  8. package/dist/{introspect-ED3XKT4A.mjs → introspect-HWOZIVET.mjs} +2 -2
  9. package/dist/{list-X3D3GABS.mjs → list-WC7JWDCJ.mjs} +1 -1
  10. package/dist/{update-2SWGQJR2.mjs → update-6LL5PQEQ.mjs} +1 -1
  11. package/package.json +1 -1
  12. package/templates/storefront-auto/app/account/orders/[id]/page.tsx +42 -0
  13. package/templates/storefront-auto/app/sitemap-page/page.tsx +0 -2
  14. package/templates/storefront-auto/components/account-pill.tsx +4 -17
  15. package/templates/storefront-auto/components/order-detail.tsx +11 -0
  16. package/templates/storefront-auto/lib/brand.ts +0 -1
  17. package/templates/storefront-auto/lib/cimplify-server.ts +0 -2
  18. package/templates/storefront-bakery/AGENTS.md +0 -2
  19. package/templates/storefront-bakery/app/account/orders/[id]/page.tsx +42 -0
  20. package/templates/storefront-bakery/app/sitemap-page/page.tsx +0 -2
  21. package/templates/storefront-bakery/components/account-pill.tsx +4 -17
  22. package/templates/storefront-bakery/components/order-detail.tsx +11 -0
  23. package/templates/storefront-bakery/lib/brand.ts +0 -1
  24. package/templates/storefront-bakery/lib/cimplify-server.ts +0 -2
  25. package/templates/storefront-fashion/AGENTS.md +0 -2
  26. package/templates/storefront-fashion/app/account/orders/[id]/page.tsx +42 -0
  27. package/templates/storefront-fashion/app/sitemap-page/page.tsx +0 -2
  28. package/templates/storefront-fashion/components/account-pill.tsx +4 -17
  29. package/templates/storefront-fashion/components/order-detail.tsx +11 -0
  30. package/templates/storefront-fashion/lib/brand.ts +0 -1
  31. package/templates/storefront-fashion/lib/cimplify-server.ts +0 -2
  32. package/templates/storefront-grocery/AGENTS.md +0 -2
  33. package/templates/storefront-grocery/app/account/orders/[id]/page.tsx +42 -0
  34. package/templates/storefront-grocery/app/sitemap-page/page.tsx +0 -2
  35. package/templates/storefront-grocery/components/account-pill.tsx +4 -17
  36. package/templates/storefront-grocery/components/order-detail.tsx +11 -0
  37. package/templates/storefront-grocery/lib/brand.ts +0 -1
  38. package/templates/storefront-grocery/lib/cimplify-server.ts +0 -2
  39. package/templates/storefront-pharmacy/AGENTS.md +0 -2
  40. package/templates/storefront-pharmacy/app/account/orders/[id]/page.tsx +42 -0
  41. package/templates/storefront-pharmacy/app/sitemap-page/page.tsx +0 -2
  42. package/templates/storefront-pharmacy/components/account-pill.tsx +4 -17
  43. package/templates/storefront-pharmacy/components/order-detail.tsx +11 -0
  44. package/templates/storefront-pharmacy/lib/brand.ts +0 -1
  45. package/templates/storefront-pharmacy/lib/cimplify-server.ts +0 -2
  46. package/templates/storefront-restaurant/AGENTS.md +0 -2
  47. package/templates/storefront-restaurant/app/account/orders/[id]/page.tsx +42 -0
  48. package/templates/storefront-restaurant/app/sitemap-page/page.tsx +0 -2
  49. package/templates/storefront-restaurant/components/account-pill.tsx +4 -17
  50. package/templates/storefront-restaurant/components/order-detail.tsx +11 -0
  51. package/templates/storefront-restaurant/lib/brand.ts +0 -1
  52. package/templates/storefront-restaurant/lib/cimplify-server.ts +0 -2
  53. package/templates/storefront-retail/AGENTS.md +0 -2
  54. package/templates/storefront-retail/app/account/orders/[id]/page.tsx +42 -0
  55. package/templates/storefront-retail/app/sitemap-page/page.tsx +0 -2
  56. package/templates/storefront-retail/components/account-pill.tsx +4 -17
  57. package/templates/storefront-retail/components/order-detail.tsx +11 -0
  58. package/templates/storefront-retail/lib/brand.ts +0 -1
  59. package/templates/storefront-retail/lib/cimplify-server.ts +0 -2
  60. package/templates/storefront-services/AGENTS.md +0 -2
  61. package/templates/storefront-services/app/account/orders/[id]/page.tsx +42 -0
  62. package/templates/storefront-services/app/sitemap-page/page.tsx +0 -2
  63. package/templates/storefront-services/components/account-pill.tsx +4 -17
  64. package/templates/storefront-services/components/order-detail.tsx +11 -0
  65. package/templates/storefront-services/lib/brand.ts +0 -1
  66. package/templates/storefront-services/lib/cimplify-server.ts +0 -2
  67. package/templates/storefront-auto/app/account/addresses/actions.ts +0 -56
  68. package/templates/storefront-auto/app/account/addresses/page.tsx +0 -184
  69. package/templates/storefront-auto/app/account/wallets/actions.ts +0 -52
  70. package/templates/storefront-auto/app/account/wallets/page.tsx +0 -185
  71. package/templates/storefront-bakery/app/account/addresses/actions.ts +0 -56
  72. package/templates/storefront-bakery/app/account/addresses/page.tsx +0 -184
  73. package/templates/storefront-bakery/app/account/wallets/actions.ts +0 -52
  74. package/templates/storefront-bakery/app/account/wallets/page.tsx +0 -185
  75. package/templates/storefront-fashion/app/account/addresses/actions.ts +0 -56
  76. package/templates/storefront-fashion/app/account/addresses/page.tsx +0 -184
  77. package/templates/storefront-fashion/app/account/wallets/actions.ts +0 -52
  78. package/templates/storefront-fashion/app/account/wallets/page.tsx +0 -185
  79. package/templates/storefront-grocery/app/account/addresses/actions.ts +0 -56
  80. package/templates/storefront-grocery/app/account/addresses/page.tsx +0 -184
  81. package/templates/storefront-grocery/app/account/wallets/actions.ts +0 -52
  82. package/templates/storefront-grocery/app/account/wallets/page.tsx +0 -185
  83. package/templates/storefront-pharmacy/app/account/addresses/actions.ts +0 -56
  84. package/templates/storefront-pharmacy/app/account/addresses/page.tsx +0 -184
  85. package/templates/storefront-pharmacy/app/account/wallets/actions.ts +0 -52
  86. package/templates/storefront-pharmacy/app/account/wallets/page.tsx +0 -185
  87. package/templates/storefront-restaurant/app/account/addresses/actions.ts +0 -56
  88. package/templates/storefront-restaurant/app/account/addresses/page.tsx +0 -184
  89. package/templates/storefront-restaurant/app/account/wallets/actions.ts +0 -52
  90. package/templates/storefront-restaurant/app/account/wallets/page.tsx +0 -185
  91. package/templates/storefront-retail/app/account/addresses/actions.ts +0 -56
  92. package/templates/storefront-retail/app/account/addresses/page.tsx +0 -184
  93. package/templates/storefront-retail/app/account/wallets/actions.ts +0 -52
  94. package/templates/storefront-retail/app/account/wallets/page.tsx +0 -185
  95. package/templates/storefront-services/app/account/addresses/actions.ts +0 -56
  96. package/templates/storefront-services/app/account/addresses/page.tsx +0 -184
  97. package/templates/storefront-services/app/account/wallets/actions.ts +0 -52
  98. package/templates/storefront-services/app/account/wallets/page.tsx +0 -185
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
- import { TEMPLATES } from './chunk-U7L3GR3Y.mjs';
3
- import { package_default } from './chunk-DY5TIVWB.mjs';
2
+ import { TEMPLATES } from './chunk-XKO2EB5J.mjs';
3
+ import { package_default } from './chunk-NIDPHJ45.mjs';
4
4
 
5
5
  // src/dispatcher.ts
6
6
  var VERSION = package_default.version ?? "unknown";
@@ -138,16 +138,16 @@ var COMMANDS = {
138
138
  logs: () => import('./logs-YNN2PQ24.mjs'),
139
139
  status: () => import('./status-JSYXM5RT.mjs'),
140
140
  dev: () => import('./dev-ONW2S77K.mjs'),
141
- introspect: () => import('./introspect-ED3XKT4A.mjs'),
141
+ introspect: () => import('./introspect-HWOZIVET.mjs'),
142
142
  inspect: () => import('./inspect-CGYX4DDF.mjs'),
143
- doctor: () => import('./doctor-W2BBP6OL.mjs'),
144
- explain: () => import('./explain-N6DBSJHA.mjs'),
143
+ doctor: () => import('./doctor-AMR3MFFS.mjs'),
144
+ explain: () => import('./explain-6LYQ2OL4.mjs'),
145
145
  assets: () => import('./assets-74SK63TR.mjs'),
146
146
  repo: () => import('./repo-KNQMSPVV.mjs'),
147
- list: () => import('./list-X3D3GABS.mjs'),
148
- add: () => import('./add-A5PYZXDS.mjs'),
149
- update: () => import('./update-2SWGQJR2.mjs'),
150
- upgrade: () => import('./update-2SWGQJR2.mjs'),
147
+ list: () => import('./list-WC7JWDCJ.mjs'),
148
+ add: () => import('./add-VSGQEUDS.mjs'),
149
+ update: () => import('./update-6LL5PQEQ.mjs'),
150
+ upgrade: () => import('./update-6LL5PQEQ.mjs'),
151
151
  "auth-step-up": () => import('./auth-step-up-BIUYQJP6.mjs')
152
152
  };
153
153
  var COMMAND_PREFIXES = {
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
- import { gatherIntrospection } from './chunk-WNVMNOW7.mjs';
2
+ import { gatherIntrospection } from './chunk-OJRMBHMT.mjs';
3
3
  import './chunk-K5464A3L.mjs';
4
4
  import './chunk-DBZ3UOQ2.mjs';
5
- import './chunk-DY5TIVWB.mjs';
5
+ import './chunk-NIDPHJ45.mjs';
6
6
  import { parseArgs, flagBool } from './chunk-C4M3DXKC.mjs';
7
7
  import { ApiClient } from './chunk-MAOO6ZZ5.mjs';
8
8
  import { readAuthOrNull } from './chunk-UBAI443T.mjs';
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { package_default } from './chunk-DY5TIVWB.mjs';
2
+ import { package_default } from './chunk-NIDPHJ45.mjs';
3
3
  import { parseArgs } from './chunk-C4M3DXKC.mjs';
4
4
  import { bold, dim, info, result, CliError, CLI_ERROR_CODE } from './chunk-E2T2SBP5.mjs';
5
5
 
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
- export { run as default, extractMockSeed, gatherIntrospection, renderIntrospection } from './chunk-WNVMNOW7.mjs';
2
+ export { run as default, extractMockSeed, gatherIntrospection, renderIntrospection } from './chunk-OJRMBHMT.mjs';
3
3
  import './chunk-K5464A3L.mjs';
4
4
  import './chunk-DBZ3UOQ2.mjs';
5
- import './chunk-DY5TIVWB.mjs';
5
+ import './chunk-NIDPHJ45.mjs';
6
6
  import './chunk-C4M3DXKC.mjs';
7
7
  import './chunk-UBAI443T.mjs';
8
8
  import './chunk-E2T2SBP5.mjs';
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { REGISTRY_INDEX } from './chunk-U7L3GR3Y.mjs';
2
+ import { REGISTRY_INDEX } from './chunk-XKO2EB5J.mjs';
3
3
  import { parseArgs, flagBool } from './chunk-C4M3DXKC.mjs';
4
4
  import { CliError, CLI_ERROR_CODE, info, bold, dim, green, result } from './chunk-E2T2SBP5.mjs';
5
5
 
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { package_default } from './chunk-DY5TIVWB.mjs';
2
+ import { package_default } from './chunk-NIDPHJ45.mjs';
3
3
  import { promptYesNo } from './chunk-ITAFAORS.mjs';
4
4
  import { parseArgs, flagBool, flagString } from './chunk-C4M3DXKC.mjs';
5
5
  import { success, bold, info, dim, result, failure, CliError, CLI_ERROR_CODE, step, isJsonMode } from './chunk-E2T2SBP5.mjs';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cimplify/cli",
3
- "version": "0.7.15",
3
+ "version": "0.7.17",
4
4
  "description": "Cimplify CLI — deploy, manage env vars, link projects, and scaffold storefronts",
5
5
  "keywords": [
6
6
  "cimplify",
@@ -0,0 +1,42 @@
1
+ import { notFound } from "next/navigation";
2
+ import { AccountSignedOutPrompt, toAccountOrderView } from "@cimplify/sdk/react";
3
+ import type { EnrichedOrder } from "@cimplify/sdk";
4
+ import { brand } from "@/lib/brand";
5
+ import { apiFetch, serverAccessToken, serverSession } from "@/lib/cimplify-server";
6
+ import { OrderDetail } from "@/components/order-detail";
7
+
8
+ const CLIENT_ID = process.env.NEXT_PUBLIC_CIMPLIFY_CLIENT_ID ?? "";
9
+ const REDIRECT_URI = process.env.CIMPLIFY_REDIRECT_URI ?? "";
10
+
11
+ export default async function OrderDetailPage({
12
+ params,
13
+ }: {
14
+ params: Promise<{ id: string }>;
15
+ }) {
16
+ const { id } = await params;
17
+
18
+ const session = await serverSession();
19
+ if (!session) {
20
+ return (
21
+ <AccountSignedOutPrompt
22
+ clientId={CLIENT_ID}
23
+ redirectUri={REDIRECT_URI}
24
+ eyebrow={brand.account.loginEyebrow}
25
+ title={brand.account.loginTitle}
26
+ description={brand.account.loginSubtitle}
27
+ />
28
+ );
29
+ }
30
+
31
+ const bearer = await serverAccessToken();
32
+ const order = await apiFetch<EnrichedOrder>(`/api/v1/orders/${encodeURIComponent(id)}`, {
33
+ bearer,
34
+ });
35
+ if (!order) notFound();
36
+
37
+ return (
38
+ <div className="mx-auto w-full max-w-5xl px-4 py-8 sm:px-6">
39
+ <OrderDetail {...toAccountOrderView(order)} />
40
+ </div>
41
+ );
42
+ }
@@ -54,8 +54,6 @@ const STATIC_LINKS: { title: string; links: { href: string; label: string }[] }[
54
54
  links: [
55
55
  { href: "/account", label: "Account" },
56
56
  { href: "/account/orders", label: "Orders" },
57
- { href: "/account/addresses", label: "Addresses" },
58
- { href: "/account/wallets", label: "Wallets" },
59
57
  { href: "/login", label: "Sign in" },
60
58
  { href: "/signup", label: "Create account" },
61
59
  { href: "/track-order", label: "Track an order" },
@@ -1,8 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import { useEffect, useRef } from "react";
4
- import Link from "next/link";
5
- import { CimplifySignInButton, useCimplifySession } from "@cimplify/sdk/react";
4
+ import { CimplifyUserButton, useCimplifySession } from "@cimplify/sdk/react";
6
5
  import { signInSilent } from "@cimplify/sdk";
7
6
 
8
7
  const CLIENT_ID = process.env.NEXT_PUBLIC_CIMPLIFY_CLIENT_ID ?? "";
@@ -26,24 +25,12 @@ export function AccountPill() {
26
25
 
27
26
  if (loading || !CLIENT_ID) return <span className="h-9 w-24" aria-hidden />;
28
27
 
29
- if (session) {
30
- const first = session.name?.split(/\s+/)[0] ?? "Account";
31
- return (
32
- <Link
33
- href="/account"
34
- className="text-[13px] font-medium tracking-wide text-foreground hover:text-primary transition-colors"
35
- >
36
- Hi, {first}
37
- </Link>
38
- );
39
- }
40
-
41
28
  return (
42
- <CimplifySignInButton
29
+ <CimplifyUserButton
30
+ session={session}
43
31
  clientId={CLIENT_ID}
44
32
  redirectUri={`${typeof window !== "undefined" ? window.location.origin : ""}/auth/callback`}
45
- variant="text"
46
- onSuccess={() => refresh()}
33
+ onSignIn={refresh}
47
34
  />
48
35
  );
49
36
  }
@@ -0,0 +1,11 @@
1
+ "use client";
2
+
3
+ import { useRouter } from "next/navigation";
4
+ import { AccountOrderView, type AccountOrderViewProps } from "@cimplify/sdk/react";
5
+
6
+ // Thin client wrapper so the server page can pass the (serializable) view-model
7
+ // while `onBack` (a function) is supplied on the client.
8
+ export function OrderDetail(props: AccountOrderViewProps) {
9
+ const router = useRouter();
10
+ return <AccountOrderView {...props} onBack={() => router.push("/account/orders")} />;
11
+ }
@@ -716,7 +716,6 @@ export const brand: Brand = {
716
716
  { label: "Sign in", href: "/login" },
717
717
  { label: "Create account", href: "/signup" },
718
718
  { label: "Your orders", href: "/account/orders" },
719
- { label: "Wallets", href: "/account/wallets" },
720
719
  ],
721
720
  },
722
721
  {
@@ -8,8 +8,6 @@ import type { NavItem } from "@cimplify/sdk/react";
8
8
  export const ACCOUNT_NAV: NavItem[] = [
9
9
  { label: "Dashboard", href: "/account" },
10
10
  { label: "Orders", href: "/account/orders" },
11
- { label: "Addresses", href: "/account/addresses" },
12
- { label: "Wallets", href: "/account/wallets" },
13
11
  { label: "Cimplify identity", href: "https://link.cimplify.io", external: true },
14
12
  ];
15
13
 
@@ -39,8 +39,6 @@ app/
39
39
 
40
40
  account/page.tsx <AccountDashboardPage /> (native, Server Component)
41
41
  account/orders/page.tsx <AccountOrdersPage /> (native)
42
- account/addresses/page.tsx Native list + Server Actions for CRUD
43
- account/wallets/page.tsx Native list + Server Actions for CRUD
44
42
  login/page.tsx redirect → hosted OAuth, then /account
45
43
  signup/page.tsx redirect → hosted OAuth, then /account
46
44
 
@@ -0,0 +1,42 @@
1
+ import { notFound } from "next/navigation";
2
+ import { AccountSignedOutPrompt, toAccountOrderView } from "@cimplify/sdk/react";
3
+ import type { EnrichedOrder } from "@cimplify/sdk";
4
+ import { brand } from "@/lib/brand";
5
+ import { apiFetch, serverAccessToken, serverSession } from "@/lib/cimplify-server";
6
+ import { OrderDetail } from "@/components/order-detail";
7
+
8
+ const CLIENT_ID = process.env.NEXT_PUBLIC_CIMPLIFY_CLIENT_ID ?? "";
9
+ const REDIRECT_URI = process.env.CIMPLIFY_REDIRECT_URI ?? "";
10
+
11
+ export default async function OrderDetailPage({
12
+ params,
13
+ }: {
14
+ params: Promise<{ id: string }>;
15
+ }) {
16
+ const { id } = await params;
17
+
18
+ const session = await serverSession();
19
+ if (!session) {
20
+ return (
21
+ <AccountSignedOutPrompt
22
+ clientId={CLIENT_ID}
23
+ redirectUri={REDIRECT_URI}
24
+ eyebrow={brand.account.loginEyebrow}
25
+ title={brand.account.loginTitle}
26
+ description={brand.account.loginSubtitle}
27
+ />
28
+ );
29
+ }
30
+
31
+ const bearer = await serverAccessToken();
32
+ const order = await apiFetch<EnrichedOrder>(`/api/v1/orders/${encodeURIComponent(id)}`, {
33
+ bearer,
34
+ });
35
+ if (!order) notFound();
36
+
37
+ return (
38
+ <div className="mx-auto w-full max-w-5xl px-4 py-8 sm:px-6">
39
+ <OrderDetail {...toAccountOrderView(order)} />
40
+ </div>
41
+ );
42
+ }
@@ -54,8 +54,6 @@ const STATIC_LINKS: { title: string; links: { href: string; label: string }[] }[
54
54
  links: [
55
55
  { href: "/account", label: "Account" },
56
56
  { href: "/account/orders", label: "Orders" },
57
- { href: "/account/addresses", label: "Addresses" },
58
- { href: "/account/wallets", label: "Wallets" },
59
57
  { href: "/login", label: "Sign in" },
60
58
  { href: "/signup", label: "Create account" },
61
59
  { href: "/track-order", label: "Track an order" },
@@ -1,8 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import { useEffect, useRef } from "react";
4
- import Link from "next/link";
5
- import { CimplifySignInButton, useCimplifySession } from "@cimplify/sdk/react";
4
+ import { CimplifyUserButton, useCimplifySession } from "@cimplify/sdk/react";
6
5
  import { signInSilent } from "@cimplify/sdk";
7
6
 
8
7
  const CLIENT_ID = process.env.NEXT_PUBLIC_CIMPLIFY_CLIENT_ID ?? "";
@@ -26,24 +25,12 @@ export function AccountPill() {
26
25
 
27
26
  if (loading || !CLIENT_ID) return <span className="h-9 w-24" aria-hidden />;
28
27
 
29
- if (session) {
30
- const first = session.name?.split(/\s+/)[0] ?? "Account";
31
- return (
32
- <Link
33
- href="/account"
34
- className="text-[13px] font-medium tracking-wide text-foreground hover:text-primary transition-colors"
35
- >
36
- Hi, {first}
37
- </Link>
38
- );
39
- }
40
-
41
28
  return (
42
- <CimplifySignInButton
29
+ <CimplifyUserButton
30
+ session={session}
43
31
  clientId={CLIENT_ID}
44
32
  redirectUri={`${typeof window !== "undefined" ? window.location.origin : ""}/auth/callback`}
45
- variant="text"
46
- onSuccess={() => refresh()}
33
+ onSignIn={refresh}
47
34
  />
48
35
  );
49
36
  }
@@ -0,0 +1,11 @@
1
+ "use client";
2
+
3
+ import { useRouter } from "next/navigation";
4
+ import { AccountOrderView, type AccountOrderViewProps } from "@cimplify/sdk/react";
5
+
6
+ // Thin client wrapper so the server page can pass the (serializable) view-model
7
+ // while `onBack` (a function) is supplied on the client.
8
+ export function OrderDetail(props: AccountOrderViewProps) {
9
+ const router = useRouter();
10
+ return <AccountOrderView {...props} onBack={() => router.push("/account/orders")} />;
11
+ }
@@ -542,7 +542,6 @@ export const brand: Brand = {
542
542
  { label: "Sign in", href: "/login" },
543
543
  { label: "Create account", href: "/signup" },
544
544
  { label: "Your orders", href: "/account/orders" },
545
- { label: "Wallets", href: "/account/wallets" },
546
545
  ],
547
546
  },
548
547
  {
@@ -8,8 +8,6 @@ import type { NavItem } from "@cimplify/sdk/react";
8
8
  export const ACCOUNT_NAV: NavItem[] = [
9
9
  { label: "Dashboard", href: "/account" },
10
10
  { label: "Orders", href: "/account/orders" },
11
- { label: "Addresses", href: "/account/addresses" },
12
- { label: "Wallets", href: "/account/wallets" },
13
11
  { label: "Cimplify identity", href: "https://link.cimplify.io", external: true },
14
12
  ];
15
13
 
@@ -42,8 +42,6 @@ app/
42
42
 
43
43
  account/page.tsx <AccountDashboardPage /> (native, Server Component)
44
44
  account/orders/page.tsx <AccountOrdersPage /> (native)
45
- account/addresses/page.tsx Native list + Server Actions for CRUD
46
- account/wallets/page.tsx Native list + Server Actions for CRUD
47
45
  login/page.tsx, signup/page.tsx redirects → /account
48
46
 
49
47
  contact/page.tsx, track-order/page.tsx
@@ -0,0 +1,42 @@
1
+ import { notFound } from "next/navigation";
2
+ import { AccountSignedOutPrompt, toAccountOrderView } from "@cimplify/sdk/react";
3
+ import type { EnrichedOrder } from "@cimplify/sdk";
4
+ import { brand } from "@/lib/brand";
5
+ import { apiFetch, serverAccessToken, serverSession } from "@/lib/cimplify-server";
6
+ import { OrderDetail } from "@/components/order-detail";
7
+
8
+ const CLIENT_ID = process.env.NEXT_PUBLIC_CIMPLIFY_CLIENT_ID ?? "";
9
+ const REDIRECT_URI = process.env.CIMPLIFY_REDIRECT_URI ?? "";
10
+
11
+ export default async function OrderDetailPage({
12
+ params,
13
+ }: {
14
+ params: Promise<{ id: string }>;
15
+ }) {
16
+ const { id } = await params;
17
+
18
+ const session = await serverSession();
19
+ if (!session) {
20
+ return (
21
+ <AccountSignedOutPrompt
22
+ clientId={CLIENT_ID}
23
+ redirectUri={REDIRECT_URI}
24
+ eyebrow={brand.account.loginEyebrow}
25
+ title={brand.account.loginTitle}
26
+ description={brand.account.loginSubtitle}
27
+ />
28
+ );
29
+ }
30
+
31
+ const bearer = await serverAccessToken();
32
+ const order = await apiFetch<EnrichedOrder>(`/api/v1/orders/${encodeURIComponent(id)}`, {
33
+ bearer,
34
+ });
35
+ if (!order) notFound();
36
+
37
+ return (
38
+ <div className="mx-auto w-full max-w-5xl px-4 py-8 sm:px-6">
39
+ <OrderDetail {...toAccountOrderView(order)} />
40
+ </div>
41
+ );
42
+ }
@@ -54,8 +54,6 @@ const STATIC_LINKS: { title: string; links: { href: string; label: string }[] }[
54
54
  links: [
55
55
  { href: "/account", label: "Account" },
56
56
  { href: "/account/orders", label: "Orders" },
57
- { href: "/account/addresses", label: "Addresses" },
58
- { href: "/account/wallets", label: "Wallets" },
59
57
  { href: "/login", label: "Sign in" },
60
58
  { href: "/signup", label: "Create account" },
61
59
  { href: "/track-order", label: "Track an order" },
@@ -1,8 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import { useEffect, useRef } from "react";
4
- import Link from "next/link";
5
- import { CimplifySignInButton, useCimplifySession } from "@cimplify/sdk/react";
4
+ import { CimplifyUserButton, useCimplifySession } from "@cimplify/sdk/react";
6
5
  import { signInSilent } from "@cimplify/sdk";
7
6
 
8
7
  const CLIENT_ID = process.env.NEXT_PUBLIC_CIMPLIFY_CLIENT_ID ?? "";
@@ -26,24 +25,12 @@ export function AccountPill() {
26
25
 
27
26
  if (loading || !CLIENT_ID) return <span className="h-9 w-24" aria-hidden />;
28
27
 
29
- if (session) {
30
- const first = session.name?.split(/\s+/)[0] ?? "Account";
31
- return (
32
- <Link
33
- href="/account"
34
- className="text-[13px] font-medium tracking-wide text-foreground hover:text-primary transition-colors"
35
- >
36
- Hi, {first}
37
- </Link>
38
- );
39
- }
40
-
41
28
  return (
42
- <CimplifySignInButton
29
+ <CimplifyUserButton
30
+ session={session}
43
31
  clientId={CLIENT_ID}
44
32
  redirectUri={`${typeof window !== "undefined" ? window.location.origin : ""}/auth/callback`}
45
- variant="text"
46
- onSuccess={() => refresh()}
33
+ onSignIn={refresh}
47
34
  />
48
35
  );
49
36
  }
@@ -0,0 +1,11 @@
1
+ "use client";
2
+
3
+ import { useRouter } from "next/navigation";
4
+ import { AccountOrderView, type AccountOrderViewProps } from "@cimplify/sdk/react";
5
+
6
+ // Thin client wrapper so the server page can pass the (serializable) view-model
7
+ // while `onBack` (a function) is supplied on the client.
8
+ export function OrderDetail(props: AccountOrderViewProps) {
9
+ const router = useRouter();
10
+ return <AccountOrderView {...props} onBack={() => router.push("/account/orders")} />;
11
+ }
@@ -490,7 +490,6 @@ export const brand: Brand = {
490
490
  { label: "Sign in", href: "/login" },
491
491
  { label: "Create account", href: "/signup" },
492
492
  { label: "Your orders", href: "/account/orders" },
493
- { label: "Wallets", href: "/account/wallets" },
494
493
  ],
495
494
  },
496
495
  {
@@ -8,8 +8,6 @@ import type { NavItem } from "@cimplify/sdk/react";
8
8
  export const ACCOUNT_NAV: NavItem[] = [
9
9
  { label: "Dashboard", href: "/account" },
10
10
  { label: "Orders", href: "/account/orders" },
11
- { label: "Addresses", href: "/account/addresses" },
12
- { label: "Wallets", href: "/account/wallets" },
13
11
  { label: "Cimplify identity", href: "https://link.cimplify.io", external: true },
14
12
  ];
15
13
 
@@ -30,8 +30,6 @@ app/
30
30
 
31
31
  account/page.tsx <AccountDashboardPage /> (native, Server Component)
32
32
  account/orders/page.tsx <AccountOrdersPage /> (native)
33
- account/addresses/page.tsx Native list + Server Actions for CRUD
34
- account/wallets/page.tsx Native list + Server Actions for CRUD
35
33
  login/page.tsx, signup/page.tsx redirects → /account
36
34
 
37
35
  contact/page.tsx, track-order/page.tsx
@@ -0,0 +1,42 @@
1
+ import { notFound } from "next/navigation";
2
+ import { AccountSignedOutPrompt, toAccountOrderView } from "@cimplify/sdk/react";
3
+ import type { EnrichedOrder } from "@cimplify/sdk";
4
+ import { brand } from "@/lib/brand";
5
+ import { apiFetch, serverAccessToken, serverSession } from "@/lib/cimplify-server";
6
+ import { OrderDetail } from "@/components/order-detail";
7
+
8
+ const CLIENT_ID = process.env.NEXT_PUBLIC_CIMPLIFY_CLIENT_ID ?? "";
9
+ const REDIRECT_URI = process.env.CIMPLIFY_REDIRECT_URI ?? "";
10
+
11
+ export default async function OrderDetailPage({
12
+ params,
13
+ }: {
14
+ params: Promise<{ id: string }>;
15
+ }) {
16
+ const { id } = await params;
17
+
18
+ const session = await serverSession();
19
+ if (!session) {
20
+ return (
21
+ <AccountSignedOutPrompt
22
+ clientId={CLIENT_ID}
23
+ redirectUri={REDIRECT_URI}
24
+ eyebrow={brand.account.loginEyebrow}
25
+ title={brand.account.loginTitle}
26
+ description={brand.account.loginSubtitle}
27
+ />
28
+ );
29
+ }
30
+
31
+ const bearer = await serverAccessToken();
32
+ const order = await apiFetch<EnrichedOrder>(`/api/v1/orders/${encodeURIComponent(id)}`, {
33
+ bearer,
34
+ });
35
+ if (!order) notFound();
36
+
37
+ return (
38
+ <div className="mx-auto w-full max-w-5xl px-4 py-8 sm:px-6">
39
+ <OrderDetail {...toAccountOrderView(order)} />
40
+ </div>
41
+ );
42
+ }
@@ -54,8 +54,6 @@ const STATIC_LINKS: { title: string; links: { href: string; label: string }[] }[
54
54
  links: [
55
55
  { href: "/account", label: "Account" },
56
56
  { href: "/account/orders", label: "Orders" },
57
- { href: "/account/addresses", label: "Addresses" },
58
- { href: "/account/wallets", label: "Wallets" },
59
57
  { href: "/login", label: "Sign in" },
60
58
  { href: "/signup", label: "Create account" },
61
59
  { href: "/track-order", label: "Track an order" },
@@ -1,8 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import { useEffect, useRef } from "react";
4
- import Link from "next/link";
5
- import { CimplifySignInButton, useCimplifySession } from "@cimplify/sdk/react";
4
+ import { CimplifyUserButton, useCimplifySession } from "@cimplify/sdk/react";
6
5
  import { signInSilent } from "@cimplify/sdk";
7
6
 
8
7
  const CLIENT_ID = process.env.NEXT_PUBLIC_CIMPLIFY_CLIENT_ID ?? "";
@@ -26,24 +25,12 @@ export function AccountPill() {
26
25
 
27
26
  if (loading || !CLIENT_ID) return <span className="h-9 w-24" aria-hidden />;
28
27
 
29
- if (session) {
30
- const first = session.name?.split(/\s+/)[0] ?? "Account";
31
- return (
32
- <Link
33
- href="/account"
34
- className="text-[13px] font-medium tracking-wide text-foreground hover:text-primary transition-colors"
35
- >
36
- Hi, {first}
37
- </Link>
38
- );
39
- }
40
-
41
28
  return (
42
- <CimplifySignInButton
29
+ <CimplifyUserButton
30
+ session={session}
43
31
  clientId={CLIENT_ID}
44
32
  redirectUri={`${typeof window !== "undefined" ? window.location.origin : ""}/auth/callback`}
45
- variant="text"
46
- onSuccess={() => refresh()}
33
+ onSignIn={refresh}
47
34
  />
48
35
  );
49
36
  }
@@ -0,0 +1,11 @@
1
+ "use client";
2
+
3
+ import { useRouter } from "next/navigation";
4
+ import { AccountOrderView, type AccountOrderViewProps } from "@cimplify/sdk/react";
5
+
6
+ // Thin client wrapper so the server page can pass the (serializable) view-model
7
+ // while `onBack` (a function) is supplied on the client.
8
+ export function OrderDetail(props: AccountOrderViewProps) {
9
+ const router = useRouter();
10
+ return <AccountOrderView {...props} onBack={() => router.push("/account/orders")} />;
11
+ }
@@ -347,7 +347,6 @@ export const brand: Brand = {
347
347
  { label: "Sign in", href: "/login" },
348
348
  { label: "Create account", href: "/signup" },
349
349
  { label: "Your orders", href: "/account/orders" },
350
- { label: "Wallets", href: "/account/wallets" },
351
350
  ],
352
351
  },
353
352
  {
@@ -8,8 +8,6 @@ import type { NavItem } from "@cimplify/sdk/react";
8
8
  export const ACCOUNT_NAV: NavItem[] = [
9
9
  { label: "Dashboard", href: "/account" },
10
10
  { label: "Orders", href: "/account/orders" },
11
- { label: "Addresses", href: "/account/addresses" },
12
- { label: "Wallets", href: "/account/wallets" },
13
11
  { label: "Cimplify identity", href: "https://link.cimplify.io", external: true },
14
12
  ];
15
13
 
@@ -35,8 +35,6 @@ app/
35
35
 
36
36
  account/page.tsx <AccountDashboardPage /> (native, Server Component)
37
37
  account/orders/page.tsx <AccountOrdersPage /> (native)
38
- account/addresses/page.tsx Native list + Server Actions for CRUD
39
- account/wallets/page.tsx Native list + Server Actions for CRUD
40
38
  login/page.tsx, signup/page.tsx redirects → /account
41
39
 
42
40
  contact/page.tsx Pharmacist consult form