@nextsparkjs/core 0.1.0-beta.105 → 0.1.0-beta.106

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 (35) hide show
  1. package/dist/components/dashboard/misc/QuickCreateDropdown.d.ts.map +1 -1
  2. package/dist/components/dashboard/misc/QuickCreateDropdown.js +12 -9
  3. package/dist/lib/entities/registry.client.d.ts +7 -1
  4. package/dist/lib/entities/registry.client.d.ts.map +1 -1
  5. package/dist/lib/entities/registry.client.js +12 -1
  6. package/dist/lib/entities/types.d.ts +6 -3
  7. package/dist/lib/entities/types.d.ts.map +1 -1
  8. package/dist/styles/classes.json +1 -1
  9. package/dist/templates/app/(auth)/signup/page.tsx +1 -1
  10. package/dist/templates/app/api/auth/[...all]/route.ts +39 -10
  11. package/dist/templates/app/api/v1/billing/cancel/route.ts +8 -5
  12. package/dist/templates/app/api/v1/billing/checkout/route.ts +3 -3
  13. package/dist/templates/app/api/v1/billing/portal/route.ts +2 -2
  14. package/dist/templates/contents/themes/starter/messages/de/navigation.json +1 -0
  15. package/dist/templates/contents/themes/starter/messages/en/navigation.json +1 -0
  16. package/dist/templates/contents/themes/starter/messages/es/navigation.json +1 -0
  17. package/dist/templates/contents/themes/starter/messages/fr/navigation.json +1 -0
  18. package/dist/templates/contents/themes/starter/messages/it/navigation.json +1 -0
  19. package/dist/templates/contents/themes/starter/messages/pt/navigation.json +1 -0
  20. package/package.json +2 -2
  21. package/scripts/build/registry/generators/entity-registry.mjs +13 -1
  22. package/scripts/build/registry/generators/template-registry.mjs +9 -2
  23. package/templates/app/(auth)/signup/page.tsx +1 -1
  24. package/templates/app/api/auth/[...all]/route.ts +39 -10
  25. package/templates/app/api/v1/billing/cancel/route.ts +8 -5
  26. package/templates/app/api/v1/billing/checkout/route.ts +3 -3
  27. package/templates/app/api/v1/billing/portal/route.ts +2 -2
  28. package/templates/contents/themes/starter/messages/de/navigation.json +1 -0
  29. package/templates/contents/themes/starter/messages/en/navigation.json +1 -0
  30. package/templates/contents/themes/starter/messages/es/navigation.json +1 -0
  31. package/templates/contents/themes/starter/messages/fr/navigation.json +1 -0
  32. package/templates/contents/themes/starter/messages/it/navigation.json +1 -0
  33. package/templates/contents/themes/starter/messages/pt/navigation.json +1 -0
  34. package/dist/templates/app/api/v1/billing/webhooks/polar/route.ts +0 -410
  35. package/templates/app/api/v1/billing/webhooks/polar/route.ts +0 -410
@@ -1 +1 @@
1
- {"version":3,"file":"QuickCreateDropdown.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/misc/QuickCreateDropdown.tsx"],"names":[],"mappings":"AAiBA,wBAAgB,mBAAmB,4CAkElC"}
1
+ {"version":3,"file":"QuickCreateDropdown.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/misc/QuickCreateDropdown.tsx"],"names":[],"mappings":"AAqBA,wBAAgB,mBAAmB,4CAoElC"}
@@ -13,7 +13,12 @@ import {
13
13
  import { Plus, Loader2 } from "lucide-react";
14
14
  import { useQuickCreateEntities } from "../../../hooks/useQuickCreateEntities.js";
15
15
  import { sel } from "../../../lib/test/index.js";
16
+ import { useTranslations } from "next-intl";
17
+ function capitalize(str) {
18
+ return str.charAt(0).toUpperCase() + str.slice(1);
19
+ }
16
20
  function QuickCreateDropdown() {
21
+ const t = useTranslations("navigation");
17
22
  const { entities: availableEntities, isLoading, hasEntities } = useQuickCreateEntities();
18
23
  if (isLoading || !hasEntities) {
19
24
  if (isLoading) {
@@ -24,7 +29,7 @@ function QuickCreateDropdown() {
24
29
  size: "icon",
25
30
  className: "relative h-8 w-8",
26
31
  disabled: true,
27
- "aria-label": "Loading quick create options",
32
+ "aria-label": t("quickCreate"),
28
33
  children: /* @__PURE__ */ jsx(Loader2, { className: "h-4 w-4 animate-spin" })
29
34
  }
30
35
  );
@@ -38,7 +43,7 @@ function QuickCreateDropdown() {
38
43
  variant: "ghost",
39
44
  size: "icon",
40
45
  className: "relative h-8 w-8",
41
- "aria-label": "Quick create",
46
+ "aria-label": t("quickCreate"),
42
47
  "data-cy": sel("dashboard.topnav.quickCreate.trigger"),
43
48
  children: /* @__PURE__ */ jsx(Plus, { className: "h-4 w-4" })
44
49
  }
@@ -50,10 +55,11 @@ function QuickCreateDropdown() {
50
55
  className: "w-56",
51
56
  "data-cy": sel("dashboard.topnav.quickCreate.content"),
52
57
  children: [
53
- /* @__PURE__ */ jsx(DropdownMenuLabel, { children: "Quick Create" }),
58
+ /* @__PURE__ */ jsx(DropdownMenuLabel, { children: t("quickCreate") }),
54
59
  /* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
55
60
  availableEntities.map((entity) => {
56
- var _a, _b;
61
+ var _a;
62
+ const entityName = capitalize(((_a = entity.names) == null ? void 0 : _a.singular) || entity.slug);
57
63
  return /* @__PURE__ */ jsx(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ jsxs(
58
64
  Link,
59
65
  {
@@ -63,11 +69,8 @@ function QuickCreateDropdown() {
63
69
  children: [
64
70
  /* @__PURE__ */ jsx(entity.icon, { className: "h-4 w-4" }),
65
71
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
66
- /* @__PURE__ */ jsx("span", { className: "font-medium", children: ((_a = entity.names) == null ? void 0 : _a.singular) || entity.slug }),
67
- /* @__PURE__ */ jsxs("span", { className: "text-xs text-muted-foreground", children: [
68
- "Create new ",
69
- (((_b = entity.names) == null ? void 0 : _b.singular) || entity.slug).toLowerCase()
70
- ] })
72
+ /* @__PURE__ */ jsx("span", { className: "font-medium", children: entityName }),
73
+ /* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground", children: t("quickCreateNew", { entity: entityName }) })
71
74
  ] })
72
75
  ]
73
76
  }
@@ -4,7 +4,12 @@
4
4
  * Provides minimal entity functionality for client components
5
5
  * without any server-side imports or contents integration
6
6
  */
7
- import type { EntityConfig } from './types';
7
+ import type { EntityConfig, EntityIcon } from './types';
8
+ /**
9
+ * Register an entity icon for client-side use
10
+ * Called by auto-generated entity-registry.client.ts
11
+ */
12
+ export declare function registerEntityIcon(slug: string, icon: EntityIcon): void;
8
13
  /**
9
14
  * Client-only entity registry with minimal functionality
10
15
  */
@@ -35,6 +40,7 @@ export declare const clientEntityRegistry: ClientEntityRegistry;
35
40
  /**
36
41
  * Set entities from server-side data
37
42
  * Called by EntityProvider when receiving server data
43
+ * Merges pre-registered icons from entityIconRegistry to preserve non-lucide icons
38
44
  */
39
45
  export declare function setServerEntities(entities: EntityConfig[]): void;
40
46
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"registry.client.d.ts","sourceRoot":"","sources":["../../../src/lib/entities/registry.client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3C;;GAEG;AACH,cAAM,oBAAoB;IACxB,OAAO,CAAC,QAAQ,CAAuC;IAEvD;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAIpC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI3C;;OAEG;IACH,MAAM,IAAI,YAAY,EAAE;IAIxB;;OAEG;IACH,UAAU,IAAI,YAAY,EAAE;IAI5B;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAGD,eAAO,MAAM,oBAAoB,sBAA6B,CAAA;AAE9D;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI,CAKhE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,EAAE,CAUpD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,EAAE,CAEnD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAEzD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEtE"}
1
+ {"version":3,"file":"registry.client.d.ts","sourceRoot":"","sources":["../../../src/lib/entities/registry.client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AASvD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAIvE;AAED;;GAEG;AACH,cAAM,oBAAoB;IACxB,OAAO,CAAC,QAAQ,CAAuC;IAEvD;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAIpC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI3C;;OAEG;IACH,MAAM,IAAI,YAAY,EAAE;IAIxB;;OAEG;IACH,UAAU,IAAI,YAAY,EAAE;IAI5B;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAGD,eAAO,MAAM,oBAAoB,sBAA6B,CAAA;AAE9D;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI,CAWhE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,EAAE,CAUpD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,EAAE,CAEnD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAEzD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEtE"}
@@ -1,4 +1,10 @@
1
1
  "use client";
2
+ const entityIconRegistry = /* @__PURE__ */ new Map();
3
+ function registerEntityIcon(slug, icon) {
4
+ if (icon) {
5
+ entityIconRegistry.set(slug, icon);
6
+ }
7
+ }
2
8
  class ClientEntityRegistry {
3
9
  entities = /* @__PURE__ */ new Map();
4
10
  /**
@@ -35,9 +41,13 @@ class ClientEntityRegistry {
35
41
  const clientEntityRegistry = new ClientEntityRegistry();
36
42
  function setServerEntities(entities) {
37
43
  for (const entity of entities) {
44
+ const registeredIcon = entityIconRegistry.get(entity.slug);
45
+ if (registeredIcon) {
46
+ entity.icon = registeredIcon;
47
+ }
38
48
  clientEntityRegistry.register(entity);
39
49
  }
40
- console.log(`[EntityRegistry] Client-side: registered ${entities.length} entities from server`);
50
+ console.log(`[EntityRegistry] Client-side: registered ${entities.length} entities from server (${entityIconRegistry.size} icons from registry)`);
41
51
  }
42
52
  function getAllEntityConfigs() {
43
53
  const clientEntities = clientEntityRegistry.getAll();
@@ -61,5 +71,6 @@ export {
61
71
  getEnabledEntities,
62
72
  getEntityConfig,
63
73
  registerEntity,
74
+ registerEntityIcon,
64
75
  setServerEntities
65
76
  };
@@ -4,8 +4,11 @@
4
4
  * This file defines the complete type system for the WordPress-like Entity System.
5
5
  * It provides interfaces for config-driven architecture with comprehensive feature support.
6
6
  */
7
- import type { LucideIcon } from 'lucide-react';
8
7
  import type { ZodSchema } from 'zod';
8
+ /** Generic icon component type - compatible with lucide-react, @phosphor-icons/react, etc. */
9
+ export type EntityIcon = React.ComponentType<{
10
+ className?: string;
11
+ }>;
9
12
  /**
10
13
  * Plan types available in the application
11
14
  */
@@ -56,8 +59,8 @@ export interface EntityConfig {
56
59
  /** Plural form (e.g., 'Tasks') */
57
60
  plural: string;
58
61
  };
59
- /** Lucide icon for UI display */
60
- icon: LucideIcon;
62
+ /** Icon component for UI display (lucide-react, @phosphor-icons/react, etc.) */
63
+ icon: EntityIcon;
61
64
  /** Database table name (optional - defaults to slug with underscores) */
62
65
  tableName?: string;
63
66
  access: {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/entities/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/entities/types.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  {
2
- "generated": "2026-02-24T05:05:49.640Z",
2
+ "generated": "2026-02-24T08:23:07.480Z",
3
3
  "totalClasses": 1071,
4
4
  "classes": [
5
5
  "!text-2xl",
@@ -40,4 +40,4 @@ async function SignupPage() {
40
40
 
41
41
  export const dynamic = 'force-dynamic'
42
42
 
43
- export default getTemplateOrDefault('app/(auth)/signup/page.tsx', SignupPage)
43
+ export default getTemplateOrDefault('app/(auth)/signup/page.tsx', SignupPage)
@@ -1,8 +1,10 @@
1
1
  import { auth } from "@nextsparkjs/core/lib/auth";
2
2
  import { toNextJsHandler } from "better-auth/next-js";
3
3
  import { NextRequest, NextResponse } from "next/server";
4
- import { TEAMS_CONFIG } from "@nextsparkjs/core/lib/config";
4
+ import { TEAMS_CONFIG, AUTH_CONFIG } from "@nextsparkjs/core/lib/config";
5
5
  import { isPublicSignupRestricted } from "@nextsparkjs/core/lib/teams/helpers";
6
+ // Registration helpers available if needed: shouldBlockSignup, isDomainAllowed
7
+ // Currently domain validation happens in auth.ts databaseHooks
6
8
  import { TeamService } from "@nextsparkjs/core/lib/services";
7
9
  import { wrapAuthHandlerWithCors, handleCorsPreflightRequest, addCorsHeaders } from "@nextsparkjs/core/lib/api/helpers";
8
10
 
@@ -41,25 +43,52 @@ export async function GET(req: NextRequest, context: { params: Promise<{ all: st
41
43
  return wrapAuthHandlerWithCors(() => handlers.GET(req), req);
42
44
  }
43
45
 
44
- // Intercept signup requests to validate single-tenant mode
46
+ // Intercept signup requests to validate registration mode
45
47
  export async function POST(req: NextRequest) {
46
48
  const pathname = req.nextUrl.pathname;
47
49
 
48
- // Check if this is a signup request (email or OAuth)
49
- const isSignupRequest =
50
- pathname === '/api/auth/sign-up/email' ||
51
- pathname.includes('/api/auth/callback/'); // OAuth callbacks can create users
50
+ // Determine request type
51
+ // Comprehensive signup endpoint detection to prevent bypasses
52
+ const signupEndpoints = [
53
+ '/sign-up/email',
54
+ '/sign-up/credentials',
55
+ '/signup',
56
+ '/register',
57
+ ];
58
+
59
+ const isSignupAttempt = signupEndpoints.some(endpoint => pathname.includes(endpoint));
60
+ const isOAuthCallback = pathname.includes('/api/auth/callback/');
61
+ const isSignupRequest = isSignupAttempt || isOAuthCallback;
52
62
 
53
63
  if (isSignupRequest) {
64
+ const registrationMode = AUTH_CONFIG?.registration?.mode ?? 'open';
54
65
  const teamsMode = TEAMS_CONFIG.mode;
55
66
 
56
- // In single-tenant mode, block public signup if team already exists
57
- if (isPublicSignupRestricted(teamsMode)) {
67
+ // --- Registration mode enforcement ---
68
+
69
+ // 1. Domain-restricted mode: block email signup, allow OAuth (validated in database hooks)
70
+ if (registrationMode === 'domain-restricted' && isSignupAttempt && !isOAuthCallback) {
71
+ // Block direct email/password signup in domain-restricted mode
72
+ // Only Google OAuth is allowed (domain validation happens in database hooks)
73
+ const errorResponse = NextResponse.json(
74
+ {
75
+ error: 'Email signup disabled',
76
+ message: 'Please sign up with Google using an authorized email domain.',
77
+ code: 'EMAIL_SIGNUP_DISABLED',
78
+ },
79
+ { status: 403 }
80
+ );
81
+ return await addCorsHeaders(errorResponse, req);
82
+ }
83
+
84
+ // Note: OAuth domain validation happens in auth.ts databaseHooks (user.create.before)
85
+ // The hook throws an error if the email domain is not in allowedDomains
86
+
87
+ // 2. Invitation-only mode OR single-tenant teams mode: existing behavior
88
+ if (registrationMode === 'invitation-only' || isPublicSignupRestricted(teamsMode)) {
58
89
  const teamExists = await TeamService.hasGlobal();
59
90
 
60
91
  if (teamExists) {
61
- // Block public signup - users must be invited
62
- // Add CORS headers so mobile apps can read the error message
63
92
  const errorResponse = NextResponse.json(
64
93
  {
65
94
  error: 'Registration is closed',
@@ -11,7 +11,11 @@ import { NextRequest, NextResponse } from 'next/server'
11
11
  import { z } from 'zod'
12
12
  import { authenticateRequest, createAuthError } from '@nextsparkjs/core/lib/api/auth/dual-auth'
13
13
  import { SubscriptionService, MembershipService } from '@nextsparkjs/core/lib/services'
14
- import { getBillingGateway } from '@nextsparkjs/core/lib/billing/gateways/factory'
14
+ import {
15
+ cancelSubscriptionAtPeriodEnd,
16
+ cancelSubscriptionImmediately,
17
+ reactivateSubscription
18
+ } from '@nextsparkjs/core/lib/billing/gateways/stripe'
15
19
  import { queryWithRLS } from '@nextsparkjs/core/lib/db'
16
20
  import { withRateLimitTier } from '@nextsparkjs/core/lib/api/rate-limit'
17
21
 
@@ -104,11 +108,10 @@ export const POST = withRateLimitTier(async (request: NextRequest) => {
104
108
 
105
109
  // 6. Cancel via Stripe
106
110
  try {
107
- const gateway = getBillingGateway()
108
111
  if (immediate) {
109
- await gateway.cancelSubscriptionImmediately(subscription.externalSubscriptionId)
112
+ await cancelSubscriptionImmediately(subscription.externalSubscriptionId)
110
113
  } else {
111
- await gateway.cancelSubscriptionAtPeriodEnd(subscription.externalSubscriptionId)
114
+ await cancelSubscriptionAtPeriodEnd(subscription.externalSubscriptionId)
112
115
  }
113
116
 
114
117
  // 7. Update local DB
@@ -171,7 +174,7 @@ async function handleReactivation(teamId: string) {
171
174
  }
172
175
 
173
176
  try {
174
- await getBillingGateway().reactivateSubscription(subscription.externalSubscriptionId)
177
+ await reactivateSubscription(subscription.externalSubscriptionId)
175
178
 
176
179
  // Update local DB
177
180
  await queryWithRLS(
@@ -11,7 +11,7 @@
11
11
 
12
12
  import { NextRequest, NextResponse } from 'next/server'
13
13
  import { authenticateRequest, createAuthError } from '@nextsparkjs/core/lib/api/auth/dual-auth'
14
- import { getBillingGateway } from '@nextsparkjs/core/lib/billing/gateways/factory'
14
+ import { createCheckoutSession } from '@nextsparkjs/core/lib/billing/gateways/stripe'
15
15
  import { SubscriptionService, MembershipService } from '@nextsparkjs/core/lib/services'
16
16
  import { z } from 'zod'
17
17
  import { withRateLimitTier } from '@nextsparkjs/core/lib/api/rate-limit'
@@ -94,8 +94,8 @@ export const POST = withRateLimitTier(async (request: NextRequest) => {
94
94
  const successUrl = `${appUrl}/dashboard/settings/billing?success=true`
95
95
  const cancelUrl = `${appUrl}/dashboard/settings/billing?canceled=true`
96
96
 
97
- // Create checkout session via billing gateway
98
- const session = await getBillingGateway().createCheckoutSession({
97
+ // Create Stripe Checkout session
98
+ const session = await createCheckoutSession({
99
99
  teamId,
100
100
  planSlug,
101
101
  billingPeriod,
@@ -9,7 +9,7 @@
9
9
 
10
10
  import { NextRequest, NextResponse } from 'next/server'
11
11
  import { authenticateRequest, createAuthError } from '@nextsparkjs/core/lib/api/auth/dual-auth'
12
- import { getBillingGateway } from '@nextsparkjs/core/lib/billing/gateways/factory'
12
+ import { createPortalSession } from '@nextsparkjs/core/lib/billing/gateways/stripe'
13
13
  import { SubscriptionService, MembershipService } from '@nextsparkjs/core/lib/services'
14
14
  import { withRateLimitTier } from '@nextsparkjs/core/lib/api/rate-limit'
15
15
 
@@ -69,7 +69,7 @@ export const POST = withRateLimitTier(async (request: NextRequest) => {
69
69
  const appUrl = process.env.NEXT_PUBLIC_APP_URL || 'http://localhost:5173'
70
70
  const returnUrl = `${appUrl}/dashboard/settings/billing`
71
71
 
72
- const session = await getBillingGateway().createPortalSession({
72
+ const session = await createPortalSession({
73
73
  customerId: subscription.externalCustomerId,
74
74
  returnUrl
75
75
  })
@@ -12,5 +12,6 @@
12
12
  "notifications": "Benachrichtigungen",
13
13
  "search": "Suchen",
14
14
  "quickCreate": "Schnellerstellung",
15
+ "quickCreateNew": "Neu: {entity}",
15
16
  "viewAll": "Alle anzeigen"
16
17
  }
@@ -12,5 +12,6 @@
12
12
  "notifications": "Notifications",
13
13
  "search": "Search",
14
14
  "quickCreate": "Quick Create",
15
+ "quickCreateNew": "Create new {entity}",
15
16
  "viewAll": "View All"
16
17
  }
@@ -12,5 +12,6 @@
12
12
  "notifications": "Notificaciones",
13
13
  "search": "Buscar",
14
14
  "quickCreate": "Crear rápido",
15
+ "quickCreateNew": "Nuevo {entity}",
15
16
  "viewAll": "Ver todo"
16
17
  }
@@ -12,5 +12,6 @@
12
12
  "notifications": "Notifications",
13
13
  "search": "Rechercher",
14
14
  "quickCreate": "Création rapide",
15
+ "quickCreateNew": "Nouveau {entity}",
15
16
  "viewAll": "Voir tout"
16
17
  }
@@ -12,5 +12,6 @@
12
12
  "notifications": "Notifiche",
13
13
  "search": "Cerca",
14
14
  "quickCreate": "Creazione Rapida",
15
+ "quickCreateNew": "Nuovo {entity}",
15
16
  "viewAll": "Vedi Tutto"
16
17
  }
@@ -12,5 +12,6 @@
12
12
  "notifications": "Notificações",
13
13
  "search": "Pesquisar",
14
14
  "quickCreate": "Criação Rápida",
15
+ "quickCreateNew": "Novo {entity}",
15
16
  "viewAll": "Ver Tudo"
16
17
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nextsparkjs/core",
3
- "version": "0.1.0-beta.105",
3
+ "version": "0.1.0-beta.106",
4
4
  "description": "NextSpark - The complete SaaS framework for Next.js",
5
5
  "license": "MIT",
6
6
  "author": "NextSpark <hello@nextspark.dev>",
@@ -453,7 +453,7 @@
453
453
  "tailwind-merge": "^3.3.1",
454
454
  "uuid": "^13.0.0",
455
455
  "zod": "^4.1.5",
456
- "@nextsparkjs/testing": "0.1.0-beta.105"
456
+ "@nextsparkjs/testing": "0.1.0-beta.106"
457
457
  },
458
458
  "scripts": {
459
459
  "postinstall": "node scripts/postinstall.mjs || true",
@@ -212,7 +212,15 @@ export function generateEntityRegistryClient(entities, config) {
212
212
  return ` '${slug}': '${entity.name}'`
213
213
  }).join(',\n')
214
214
 
215
- return `/**
215
+ // Generate icon registration calls
216
+ const iconRegistrations = entities
217
+ .filter(entity => entity.exportName)
218
+ .map(entity => `registerEntityIcon('${entity.name}', ${entity.exportName}.icon)`)
219
+ .join('\n')
220
+
221
+ return `'use client'
222
+
223
+ /**
216
224
  * Client-Safe Entity Registry
217
225
  *
218
226
  * Generated at: ${new Date().toISOString()}
@@ -226,6 +234,10 @@ export function generateEntityRegistryClient(entities, config) {
226
234
  */
227
235
 
228
236
  ${imports}
237
+ import { registerEntityIcon } from '${convertCorePath('@/core/lib/entities/registry.client', outputFilePath, config)}'
238
+
239
+ // Pre-register entity icons so non-lucide icons survive server→client serialization
240
+ ${iconRegistrations}
229
241
 
230
242
  export interface ClientEntityConfig {
231
243
  name: string
@@ -171,9 +171,16 @@ async function hasServerOnlyExports(filePath) {
171
171
  /export\s+const\s+dynamic\s*=/,
172
172
  /export\s+const\s+fetchCache\s*=/,
173
173
  /export\s+const\s+runtime\s*=/,
174
+ /export\s+const\s+metadata\s*[=:]/,
174
175
  ]
175
176
 
176
- for (const pattern of [...serverFunctionExports, ...serverConstExports]) {
177
+ // Check for server-only module imports
178
+ const serverOnlyImports = [
179
+ /import\s+.*from\s+['"]next\/headers['"]/,
180
+ /import\s+.*from\s+['"]server-only['"]/,
181
+ ]
182
+
183
+ for (const pattern of [...serverFunctionExports, ...serverConstExports, ...serverOnlyImports]) {
177
184
  if (pattern.test(content)) {
178
185
  return true
179
186
  }
@@ -215,7 +222,7 @@ export async function generateTemplateRegistryClient(templates, config) {
215
222
  .filter(([appPath, pathTemplates]) => {
216
223
  const template = pathTemplates[0]
217
224
  // Only include page templates (not layouts) that can override components
218
- return template.templateType === 'page' && canOverrideComponent(appPath)
225
+ return (template.templateType === 'page' || template.templateType === 'layout') && canOverrideComponent(appPath)
219
226
  })
220
227
  .map(async ([appPath, pathTemplates]) => {
221
228
  const template = pathTemplates[0]
@@ -40,4 +40,4 @@ async function SignupPage() {
40
40
 
41
41
  export const dynamic = 'force-dynamic'
42
42
 
43
- export default getTemplateOrDefault('app/(auth)/signup/page.tsx', SignupPage)
43
+ export default getTemplateOrDefault('app/(auth)/signup/page.tsx', SignupPage)
@@ -1,8 +1,10 @@
1
1
  import { auth } from "@nextsparkjs/core/lib/auth";
2
2
  import { toNextJsHandler } from "better-auth/next-js";
3
3
  import { NextRequest, NextResponse } from "next/server";
4
- import { TEAMS_CONFIG } from "@nextsparkjs/core/lib/config";
4
+ import { TEAMS_CONFIG, AUTH_CONFIG } from "@nextsparkjs/core/lib/config";
5
5
  import { isPublicSignupRestricted } from "@nextsparkjs/core/lib/teams/helpers";
6
+ // Registration helpers available if needed: shouldBlockSignup, isDomainAllowed
7
+ // Currently domain validation happens in auth.ts databaseHooks
6
8
  import { TeamService } from "@nextsparkjs/core/lib/services";
7
9
  import { wrapAuthHandlerWithCors, handleCorsPreflightRequest, addCorsHeaders } from "@nextsparkjs/core/lib/api/helpers";
8
10
 
@@ -41,25 +43,52 @@ export async function GET(req: NextRequest, context: { params: Promise<{ all: st
41
43
  return wrapAuthHandlerWithCors(() => handlers.GET(req), req);
42
44
  }
43
45
 
44
- // Intercept signup requests to validate single-tenant mode
46
+ // Intercept signup requests to validate registration mode
45
47
  export async function POST(req: NextRequest) {
46
48
  const pathname = req.nextUrl.pathname;
47
49
 
48
- // Check if this is a signup request (email or OAuth)
49
- const isSignupRequest =
50
- pathname === '/api/auth/sign-up/email' ||
51
- pathname.includes('/api/auth/callback/'); // OAuth callbacks can create users
50
+ // Determine request type
51
+ // Comprehensive signup endpoint detection to prevent bypasses
52
+ const signupEndpoints = [
53
+ '/sign-up/email',
54
+ '/sign-up/credentials',
55
+ '/signup',
56
+ '/register',
57
+ ];
58
+
59
+ const isSignupAttempt = signupEndpoints.some(endpoint => pathname.includes(endpoint));
60
+ const isOAuthCallback = pathname.includes('/api/auth/callback/');
61
+ const isSignupRequest = isSignupAttempt || isOAuthCallback;
52
62
 
53
63
  if (isSignupRequest) {
64
+ const registrationMode = AUTH_CONFIG?.registration?.mode ?? 'open';
54
65
  const teamsMode = TEAMS_CONFIG.mode;
55
66
 
56
- // In single-tenant mode, block public signup if team already exists
57
- if (isPublicSignupRestricted(teamsMode)) {
67
+ // --- Registration mode enforcement ---
68
+
69
+ // 1. Domain-restricted mode: block email signup, allow OAuth (validated in database hooks)
70
+ if (registrationMode === 'domain-restricted' && isSignupAttempt && !isOAuthCallback) {
71
+ // Block direct email/password signup in domain-restricted mode
72
+ // Only Google OAuth is allowed (domain validation happens in database hooks)
73
+ const errorResponse = NextResponse.json(
74
+ {
75
+ error: 'Email signup disabled',
76
+ message: 'Please sign up with Google using an authorized email domain.',
77
+ code: 'EMAIL_SIGNUP_DISABLED',
78
+ },
79
+ { status: 403 }
80
+ );
81
+ return await addCorsHeaders(errorResponse, req);
82
+ }
83
+
84
+ // Note: OAuth domain validation happens in auth.ts databaseHooks (user.create.before)
85
+ // The hook throws an error if the email domain is not in allowedDomains
86
+
87
+ // 2. Invitation-only mode OR single-tenant teams mode: existing behavior
88
+ if (registrationMode === 'invitation-only' || isPublicSignupRestricted(teamsMode)) {
58
89
  const teamExists = await TeamService.hasGlobal();
59
90
 
60
91
  if (teamExists) {
61
- // Block public signup - users must be invited
62
- // Add CORS headers so mobile apps can read the error message
63
92
  const errorResponse = NextResponse.json(
64
93
  {
65
94
  error: 'Registration is closed',
@@ -11,7 +11,11 @@ import { NextRequest, NextResponse } from 'next/server'
11
11
  import { z } from 'zod'
12
12
  import { authenticateRequest, createAuthError } from '@nextsparkjs/core/lib/api/auth/dual-auth'
13
13
  import { SubscriptionService, MembershipService } from '@nextsparkjs/core/lib/services'
14
- import { getBillingGateway } from '@nextsparkjs/core/lib/billing/gateways/factory'
14
+ import {
15
+ cancelSubscriptionAtPeriodEnd,
16
+ cancelSubscriptionImmediately,
17
+ reactivateSubscription
18
+ } from '@nextsparkjs/core/lib/billing/gateways/stripe'
15
19
  import { queryWithRLS } from '@nextsparkjs/core/lib/db'
16
20
  import { withRateLimitTier } from '@nextsparkjs/core/lib/api/rate-limit'
17
21
 
@@ -104,11 +108,10 @@ export const POST = withRateLimitTier(async (request: NextRequest) => {
104
108
 
105
109
  // 6. Cancel via Stripe
106
110
  try {
107
- const gateway = getBillingGateway()
108
111
  if (immediate) {
109
- await gateway.cancelSubscriptionImmediately(subscription.externalSubscriptionId)
112
+ await cancelSubscriptionImmediately(subscription.externalSubscriptionId)
110
113
  } else {
111
- await gateway.cancelSubscriptionAtPeriodEnd(subscription.externalSubscriptionId)
114
+ await cancelSubscriptionAtPeriodEnd(subscription.externalSubscriptionId)
112
115
  }
113
116
 
114
117
  // 7. Update local DB
@@ -171,7 +174,7 @@ async function handleReactivation(teamId: string) {
171
174
  }
172
175
 
173
176
  try {
174
- await getBillingGateway().reactivateSubscription(subscription.externalSubscriptionId)
177
+ await reactivateSubscription(subscription.externalSubscriptionId)
175
178
 
176
179
  // Update local DB
177
180
  await queryWithRLS(
@@ -11,7 +11,7 @@
11
11
 
12
12
  import { NextRequest, NextResponse } from 'next/server'
13
13
  import { authenticateRequest, createAuthError } from '@nextsparkjs/core/lib/api/auth/dual-auth'
14
- import { getBillingGateway } from '@nextsparkjs/core/lib/billing/gateways/factory'
14
+ import { createCheckoutSession } from '@nextsparkjs/core/lib/billing/gateways/stripe'
15
15
  import { SubscriptionService, MembershipService } from '@nextsparkjs/core/lib/services'
16
16
  import { z } from 'zod'
17
17
  import { withRateLimitTier } from '@nextsparkjs/core/lib/api/rate-limit'
@@ -94,8 +94,8 @@ export const POST = withRateLimitTier(async (request: NextRequest) => {
94
94
  const successUrl = `${appUrl}/dashboard/settings/billing?success=true`
95
95
  const cancelUrl = `${appUrl}/dashboard/settings/billing?canceled=true`
96
96
 
97
- // Create checkout session via billing gateway
98
- const session = await getBillingGateway().createCheckoutSession({
97
+ // Create Stripe Checkout session
98
+ const session = await createCheckoutSession({
99
99
  teamId,
100
100
  planSlug,
101
101
  billingPeriod,