@nextsparkjs/core 0.1.0-beta.144 → 0.1.0-beta.146

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.
@@ -239,7 +239,7 @@ function LoginForm() {
239
239
  type: "button",
240
240
  onClick: () => setShowEmailForm(true),
241
241
  disabled: !!loadingProvider,
242
- className: "text-sm text-primary hover:underline focus:outline-none focus:ring-2 focus:ring-accent disabled:opacity-50 disabled:cursor-not-allowed",
242
+ className: "text-sm text-primary hover:underline focus:outline-none focus:ring-2 focus:ring-accent disabled:opacity-50 disabled:cursor-not-allowed min-h-[44px] inline-flex items-center",
243
243
  "data-cy": sel("auth.login.showEmail"),
244
244
  children: t("login.form.loginWithEmail", { defaultValue: "Sign in with Email" })
245
245
  }
@@ -249,7 +249,7 @@ function LoginForm() {
249
249
  type: "button",
250
250
  onClick: () => setShowEmailForm(true),
251
251
  disabled: !!loadingProvider,
252
- className: "text-sm text-primary hover:underline focus:outline-none focus:ring-2 focus:ring-accent disabled:opacity-50 disabled:cursor-not-allowed",
252
+ className: "text-sm text-primary hover:underline focus:outline-none focus:ring-2 focus:ring-accent disabled:opacity-50 disabled:cursor-not-allowed min-h-[44px] inline-flex items-center",
253
253
  "data-cy": sel("auth.login.showEmail"),
254
254
  children: t("login.form.loginWithEmail", { defaultValue: "Sign in with Email" })
255
255
  }
@@ -363,7 +363,7 @@ function LoginForm() {
363
363
  className: "flex items-center justify-between",
364
364
  "data-cy": sel("auth.login.options"),
365
365
  children: [
366
- /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-2", children: [
366
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-2 min-h-[44px]", children: [
367
367
  /* @__PURE__ */ jsx(
368
368
  Checkbox,
369
369
  {
@@ -384,7 +384,7 @@ function LoginForm() {
384
384
  Link,
385
385
  {
386
386
  href: "/forgot-password",
387
- className: "text-sm text-primary hover:underline focus:outline-none focus:ring-2 focus:ring-accent",
387
+ className: "text-sm text-primary hover:underline focus:outline-none focus:ring-2 focus:ring-accent min-h-[44px] inline-flex items-center",
388
388
  "aria-label": t("login.form.forgotPasswordAria"),
389
389
  "data-cy": sel("auth.login.forgotPassword"),
390
390
  children: t("login.form.forgotPassword")
@@ -413,7 +413,7 @@ function LoginForm() {
413
413
  {
414
414
  type: "button",
415
415
  onClick: () => setShowEmailForm(false),
416
- className: "text-sm text-muted-foreground hover:text-primary focus:outline-none focus:ring-2 focus:ring-accent",
416
+ className: "text-sm text-muted-foreground hover:text-primary focus:outline-none focus:ring-2 focus:ring-accent min-h-[44px] inline-flex items-center",
417
417
  "data-cy": sel("auth.login.hideEmail"),
418
418
  children: t("login.form.backToGoogle", { defaultValue: "Back to main options" })
419
419
  }
@@ -62,7 +62,7 @@ function MobileBottomNav() {
62
62
  "data-cy": sel("dashboard.mobile.bottomNav.item", { id: item.id }),
63
63
  children: [
64
64
  /* @__PURE__ */ jsx("div", { className: "absolute -top-6 flex items-center justify-center", children: /* @__PURE__ */ jsx("div", { className: "bg-primary rounded-full p-4 shadow-lg hover:shadow-xl transition-shadow", children: /* @__PURE__ */ jsx(Icon, { className: "h-6 w-6 text-primary-foreground", "aria-hidden": "true" }) }) }),
65
- /* @__PURE__ */ jsx("span", { className: "text-[10px] font-medium text-foreground mt-8", children: item.name })
65
+ /* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-foreground mt-8", children: item.name })
66
66
  ]
67
67
  },
68
68
  item.id
@@ -83,7 +83,7 @@ function MobileBottomNav() {
83
83
  "span",
84
84
  {
85
85
  className: cn(
86
- "text-[10px] font-medium transition-colors",
86
+ "text-xs font-medium transition-colors",
87
87
  isActive ? "text-primary" : "text-muted-foreground"
88
88
  ),
89
89
  children: item.name
@@ -1 +1 @@
1
- {"version":3,"file":"MobileMoreSheet.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/mobile/MobileMoreSheet.tsx"],"names":[],"mappings":"AAwBA,UAAU,oBAAoB;IAC5B,MAAM,EAAE,OAAO,CAAA;IACf,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;CACtC;AAWD,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,oBAAoB,2CAuH7E"}
1
+ {"version":3,"file":"MobileMoreSheet.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/mobile/MobileMoreSheet.tsx"],"names":[],"mappings":"AA0BA,UAAU,oBAAoB;IAC5B,MAAM,EAAE,OAAO,CAAA;IACf,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;CACtC;AA8CD,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,oBAAoB,2CA8G7E"}
@@ -19,6 +19,33 @@ import { useIsSuperAdmin } from "../../app/guards/SuperAdminGuard.js";
19
19
  import { useState } from "react";
20
20
  import { MOBILE_NAV_CONFIG } from "../../../lib/config/config-sync.js";
21
21
  import { getIcon } from "../../../lib/config/icon-map.js";
22
+ import { usePermission } from "../../../lib/permissions/hooks.js";
23
+ function MoreSheetItemWithPermission({
24
+ item,
25
+ onLinkClick
26
+ }) {
27
+ const permissionToCheck = item.requiresPermission || "teams.read";
28
+ const hasPermission = usePermission(permissionToCheck);
29
+ if (item.requiresPermission && !hasPermission) {
30
+ return null;
31
+ }
32
+ const Icon = item.icon;
33
+ return /* @__PURE__ */ jsxs(
34
+ Link,
35
+ {
36
+ href: item.href,
37
+ onClick: onLinkClick,
38
+ className: "flex items-center gap-3 px-4 py-3 rounded-lg hover:bg-accent transition-colors",
39
+ target: item.external ? "_blank" : void 0,
40
+ rel: item.external ? "noopener noreferrer" : void 0,
41
+ "data-cy": sel("dashboard.mobile.moreSheet.item", { id: item.id }),
42
+ children: [
43
+ /* @__PURE__ */ jsx(Icon, { className: "h-5 w-5 text-muted-foreground", "aria-hidden": "true" }),
44
+ /* @__PURE__ */ jsx("span", { className: "text-sm font-medium", children: item.label })
45
+ ]
46
+ }
47
+ );
48
+ }
22
49
  function MobileMoreSheet({ isOpen, onOpenChange }) {
23
50
  const { user, signOut } = useAuth();
24
51
  const tCommon = useTranslations("common");
@@ -46,7 +73,8 @@ function MobileMoreSheet({ isOpen, onOpenChange }) {
46
73
  label: t(configItem.labelKey),
47
74
  href: configItem.href,
48
75
  icon: IconComponent,
49
- external: configItem.external || false
76
+ external: configItem.external || false,
77
+ requiresPermission: configItem.requiresPermission
50
78
  };
51
79
  });
52
80
  if (!user) return null;
@@ -62,25 +90,14 @@ function MobileMoreSheet({ isOpen, onOpenChange }) {
62
90
  /* @__PURE__ */ jsx(SheetDescription, { children: tCommon("mobileNav.moreOptionsDescription") })
63
91
  ] }),
64
92
  /* @__PURE__ */ jsxs("div", { className: "mt-6 space-y-2", children: [
65
- menuItems.map((item) => {
66
- const Icon = item.icon;
67
- return /* @__PURE__ */ jsxs(
68
- Link,
69
- {
70
- href: item.href,
71
- onClick: handleLinkClick,
72
- className: "flex items-center gap-3 px-4 py-3 rounded-lg hover:bg-accent transition-colors",
73
- target: item.external ? "_blank" : void 0,
74
- rel: item.external ? "noopener noreferrer" : void 0,
75
- "data-cy": sel("dashboard.mobile.moreSheet.item", { id: item.id }),
76
- children: [
77
- /* @__PURE__ */ jsx(Icon, { className: "h-5 w-5 text-muted-foreground", "aria-hidden": "true" }),
78
- /* @__PURE__ */ jsx("span", { className: "text-sm font-medium", children: item.label })
79
- ]
80
- },
81
- item.id
82
- );
83
- }),
93
+ menuItems.map((item) => /* @__PURE__ */ jsx(
94
+ MoreSheetItemWithPermission,
95
+ {
96
+ item,
97
+ onLinkClick: handleLinkClick
98
+ },
99
+ item.id
100
+ )),
84
101
  isSuperAdmin && /* @__PURE__ */ jsxs(Fragment, { children: [
85
102
  /* @__PURE__ */ jsx(Separator, { className: "my-2" }),
86
103
  /* @__PURE__ */ jsxs(
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicNavigation.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/navigation/DynamicNavigation.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAA;AA0BnF,UAAU,sBAAsB;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,QAAQ,EAAE,wBAAwB,EAAE,CAAA;CACrC;AAwHD,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,QAAgB,EAChB,WAAmB,EACnB,WAAW,EACX,QAAQ,EACT,EAAE,sBAAsB,2CAyFxB;AAwDD,eAAe,iBAAiB,CAAA"}
1
+ {"version":3,"file":"DynamicNavigation.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/navigation/DynamicNavigation.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAA;AA6BnF,UAAU,sBAAsB;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,QAAQ,EAAE,wBAAwB,EAAE,CAAA;CACrC;AAkKD,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,QAAgB,EAChB,WAAmB,EACnB,WAAW,EACX,QAAQ,EACT,EAAE,sBAAsB,2CAyFxB;AAwDD,eAAe,iBAAiB,CAAA"}
@@ -37,6 +37,46 @@ const labelMappings = {
37
37
  "navigation.lessons": "Lessons",
38
38
  "navigation.analytics": "Analytics"
39
39
  };
40
+ function NavItemWithPermission({
41
+ item,
42
+ sectionId,
43
+ pathname,
44
+ isMobile,
45
+ isCollapsed,
46
+ onItemClick,
47
+ normalizeKey,
48
+ t
49
+ }) {
50
+ const permissionToCheck = item.requiresPermission || "teams.read";
51
+ const hasPermission = usePermission(permissionToCheck);
52
+ if (item.requiresPermission && !hasPermission) {
53
+ return null;
54
+ }
55
+ const ItemIcon = Icons[item.icon] || Icons.Circle;
56
+ const isActive = pathname === item.href || pathname.startsWith(item.href + "/");
57
+ const normalizedItemKey = normalizeKey(item.labelKey);
58
+ const itemLabel = t(normalizedItemKey) || labelMappings[item.labelKey] || item.id;
59
+ return /* @__PURE__ */ jsxs(
60
+ Link,
61
+ {
62
+ href: item.href,
63
+ onClick: onItemClick,
64
+ className: cn(
65
+ "flex items-center rounded-lg px-3 py-2 text-sm font-medium transition-colors",
66
+ isCollapsed ? "justify-center" : "gap-3",
67
+ isActive ? "bg-secondary text-foreground" : "text-muted-foreground hover:bg-secondary/50 hover:text-foreground",
68
+ isMobile && "w-full"
69
+ ),
70
+ "aria-current": isActive ? "page" : void 0,
71
+ title: isCollapsed ? itemLabel : void 0,
72
+ "data-cy": sel("dashboard.navigation.sectionItem", { sectionId, itemId: item.id }),
73
+ children: [
74
+ /* @__PURE__ */ jsx(ItemIcon, { className: "h-4 w-4 shrink-0", "aria-hidden": "true" }),
75
+ !isCollapsed && /* @__PURE__ */ jsx("span", { className: "truncate", children: itemLabel })
76
+ ]
77
+ }
78
+ );
79
+ }
40
80
  function SectionWithPermission({
41
81
  section,
42
82
  pathname,
@@ -67,33 +107,20 @@ function SectionWithPermission({
67
107
  }
68
108
  ),
69
109
  isCollapsed && /* @__PURE__ */ jsx("div", { className: "my-2 mx-3 border-t border-border", "aria-hidden": "true" }),
70
- /* @__PURE__ */ jsx("div", { className: "space-y-1", children: section.items.map((item) => {
71
- const ItemIcon = Icons[item.icon] || Icons.Circle;
72
- const isActive = pathname === item.href || pathname.startsWith(item.href + "/");
73
- const normalizedItemKey = normalizeKey(item.labelKey);
74
- const itemLabel = t(normalizedItemKey) || labelMappings[item.labelKey] || item.id;
75
- return /* @__PURE__ */ jsxs(
76
- Link,
77
- {
78
- href: item.href,
79
- onClick: onItemClick,
80
- className: cn(
81
- "flex items-center rounded-lg px-3 py-2 text-sm font-medium transition-colors",
82
- isCollapsed ? "justify-center" : "gap-3",
83
- isActive ? "bg-secondary text-foreground" : "text-muted-foreground hover:bg-secondary/50 hover:text-foreground",
84
- isMobile && "w-full"
85
- ),
86
- "aria-current": isActive ? "page" : void 0,
87
- title: isCollapsed ? itemLabel : void 0,
88
- "data-cy": sel("dashboard.navigation.sectionItem", { sectionId: section.id, itemId: item.id }),
89
- children: [
90
- /* @__PURE__ */ jsx(ItemIcon, { className: "h-4 w-4 shrink-0", "aria-hidden": "true" }),
91
- !isCollapsed && /* @__PURE__ */ jsx("span", { className: "truncate", children: itemLabel })
92
- ]
93
- },
94
- item.id
95
- );
96
- }) })
110
+ /* @__PURE__ */ jsx("div", { className: "space-y-1", children: section.items.map((item) => /* @__PURE__ */ jsx(
111
+ NavItemWithPermission,
112
+ {
113
+ item,
114
+ sectionId: section.id,
115
+ pathname,
116
+ isMobile,
117
+ isCollapsed,
118
+ onItemClick,
119
+ normalizeKey,
120
+ t
121
+ },
122
+ item.id
123
+ )) })
97
124
  ] });
98
125
  }
99
126
  function DynamicNavigation({
@@ -77,6 +77,13 @@ export interface MobileNavMoreItem {
77
77
  enabled: boolean;
78
78
  /** Whether this link opens in a new tab */
79
79
  external?: boolean;
80
+ /**
81
+ * Permission required to display this item.
82
+ * If set, the item is only shown to users who have this permission in the current team.
83
+ * If not set, the item is shown to all users (backward compatible).
84
+ * Example: 'schedules.list', 'analytics.list'
85
+ */
86
+ requiresPermission?: string;
80
87
  }
81
88
  /**
82
89
  * Mobile Navigation Configuration
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/config/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/config/types.ts"],"names":[],"mappings":"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"}
@@ -138,7 +138,7 @@
138
138
  "checkSpam": "Revisá tu carpeta de spam",
139
139
  "correctEmail": "Asegurate de haber ingresado el email correcto",
140
140
  "waitAndRetry": "Esperá unos minutos e intentá de nuevo",
141
- "backToLogin": "Volver al Login",
141
+ "backToLogin": "Volver al inicio de sesión",
142
142
  "tryAgain": "Intentar de nuevo"
143
143
  },
144
144
  "errors": {
@@ -152,7 +152,7 @@
152
152
  "error": "Error inesperado al enviar enlace",
153
153
  "errorPrefix": "Error: {error}"
154
154
  },
155
- "backToLogin": "Volver al Login"
155
+ "backToLogin": "Volver al inicio de sesión"
156
156
  },
157
157
  "resetPassword": {
158
158
  "title": "Restablecer Contraseña",
@@ -174,8 +174,8 @@
174
174
  "success": {
175
175
  "title": "Email verificado",
176
176
  "description": "Tu email fue verificado exitosamente",
177
- "redirectingDashboard": "Redirigiéndote al dashboard...",
178
- "redirectingLogin": "Redirigiéndote al login..."
177
+ "redirectingDashboard": "Redirigiéndote al panel...",
178
+ "redirectingLogin": "Redirigiéndote al inicio de sesión..."
179
179
  },
180
180
  "failed": {
181
181
  "title": "Verificación fallida",
@@ -189,8 +189,8 @@
189
189
  "tokenExpired": "El enlace de verificación expiró. Registrate de nuevo para recibir uno nuevo",
190
190
  "unexpectedError": "Ocurrió un error inesperado"
191
191
  },
192
- "backToSignup": "Volver a registro",
193
- "goToLogin": "Ir al Login"
192
+ "backToSignup": "Volver al registro",
193
+ "goToLogin": "Iniciar sesión"
194
194
  },
195
195
  "error": {
196
196
  "backToLogin": "Volver a iniciar sesión",
@@ -1,6 +1,6 @@
1
1
  {
2
- "generated": "2026-04-15T14:36:02.678Z",
3
- "totalClasses": 1078,
2
+ "generated": "2026-04-19T21:56:26.608Z",
3
+ "totalClasses": 1079,
4
4
  "classes": [
5
5
  "!text-2xl",
6
6
  "''",
@@ -648,6 +648,7 @@
648
648
  "min-h-[120px]",
649
649
  "min-h-[200px]",
650
650
  "min-h-[400px]",
651
+ "min-h-[44px]",
651
652
  "min-h-[60px]",
652
653
  "min-h-full",
653
654
  "min-h-screen",
@@ -1,3 +1,4 @@
1
+ import { connection } from 'next/server'
1
2
  import { notFound } from 'next/navigation'
2
3
  import { DOCS_REGISTRY } from '@nextsparkjs/registries/docs-registry'
3
4
  import { parseMarkdownFile } from '@nextsparkjs/core/lib/docs/parser'
@@ -14,21 +15,6 @@ interface SuperadminDocsPageProps {
14
15
  }>
15
16
  }
16
17
 
17
- export async function generateStaticParams() {
18
- const params = []
19
-
20
- for (const section of DOCS_REGISTRY.superadmin) {
21
- for (const page of section.pages) {
22
- params.push({
23
- section: section.slug,
24
- page: page.slug
25
- })
26
- }
27
- }
28
-
29
- return params
30
- }
31
-
32
18
  export async function generateMetadata({ params }: SuperadminDocsPageProps): Promise<Metadata> {
33
19
  const resolvedParams = await params
34
20
  const { section: sectionSlug, page: pageSlug } = resolvedParams
@@ -48,6 +34,7 @@ export async function generateMetadata({ params }: SuperadminDocsPageProps): Pro
48
34
  }
49
35
 
50
36
  export default async function SuperadminDocsDetailPage({ params }: SuperadminDocsPageProps) {
37
+ await connection()
51
38
  const resolvedParams = await params
52
39
  const { section: sectionSlug, page: pageSlug } = resolvedParams
53
40
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nextsparkjs/core",
3
- "version": "0.1.0-beta.144",
3
+ "version": "0.1.0-beta.146",
4
4
  "description": "NextSpark - The complete SaaS framework for Next.js",
5
5
  "license": "MIT",
6
6
  "author": "NextSpark <hello@nextspark.dev>",
@@ -463,7 +463,7 @@
463
463
  "tailwind-merge": "^3.3.1",
464
464
  "uuid": "^13.0.0",
465
465
  "zod": "^4.1.5",
466
- "@nextsparkjs/testing": "0.1.0-beta.144"
466
+ "@nextsparkjs/testing": "0.1.0-beta.146"
467
467
  },
468
468
  "scripts": {
469
469
  "postinstall": "node scripts/postinstall.mjs || true",
@@ -218,12 +218,23 @@ export async function buildRegistries(projectRoot = null) {
218
218
  })
219
219
 
220
220
  // Merge all entities with priority: plugins < core < themes
221
- const allEntities = [
221
+ // Theme entities override core entities with the same slug (e.g., patterns)
222
+ const mergedEntities = [
222
223
  ...pluginEntities, // Lowest priority
223
224
  ...coreEntities, // Core framework entities
224
225
  ...themeEntities // Highest priority (can override core)
225
226
  ]
226
227
 
228
+ // Deduplicate: later entries (theme) win over earlier (core/plugin) with same name
229
+ const entityMap = new Map()
230
+ for (const entity of mergedEntities) {
231
+ if (entityMap.has(entity.name)) {
232
+ log(` ↳ Theme override: "${entity.name}" (${entity.source || 'theme'} replaces ${entityMap.get(entity.name).source || 'core'})`, 'info')
233
+ }
234
+ entityMap.set(entity.name, entity)
235
+ }
236
+ const allEntities = Array.from(entityMap.values())
237
+
227
238
  // PHASE 3 VALIDATION: Ensure all entities have access.shared defined
228
239
  await validateEntityConfigurations(allEntities)
229
240
 
@@ -1,3 +1,4 @@
1
+ import { connection } from 'next/server'
1
2
  import { notFound } from 'next/navigation'
2
3
  import { DOCS_REGISTRY } from '@nextsparkjs/registries/docs-registry'
3
4
  import { parseMarkdownFile } from '@nextsparkjs/core/lib/docs/parser'
@@ -14,21 +15,6 @@ interface SuperadminDocsPageProps {
14
15
  }>
15
16
  }
16
17
 
17
- export async function generateStaticParams() {
18
- const params = []
19
-
20
- for (const section of DOCS_REGISTRY.superadmin) {
21
- for (const page of section.pages) {
22
- params.push({
23
- section: section.slug,
24
- page: page.slug
25
- })
26
- }
27
- }
28
-
29
- return params
30
- }
31
-
32
18
  export async function generateMetadata({ params }: SuperadminDocsPageProps): Promise<Metadata> {
33
19
  const resolvedParams = await params
34
20
  const { section: sectionSlug, page: pageSlug } = resolvedParams
@@ -48,6 +34,7 @@ export async function generateMetadata({ params }: SuperadminDocsPageProps): Pro
48
34
  }
49
35
 
50
36
  export default async function SuperadminDocsDetailPage({ params }: SuperadminDocsPageProps) {
37
+ await connection()
51
38
  const resolvedParams = await params
52
39
  const { section: sectionSlug, page: pageSlug } = resolvedParams
53
40