@nextsparkjs/core 0.1.0-beta.192 → 0.1.0-beta.193

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 (119) hide show
  1. package/dist/components/app/layouts/PublicFooter.js +1 -1
  2. package/dist/components/app/layouts/PublicNavbar.js +1 -1
  3. package/dist/components/app/misc/ThemeToggle.d.ts.map +1 -1
  4. package/dist/components/app/misc/ThemeToggle.js +4 -3
  5. package/dist/lib/config/features-types.d.ts +5 -4
  6. package/dist/lib/config/features-types.d.ts.map +1 -1
  7. package/dist/lib/selectors/auth-sel.d.ts +2 -7
  8. package/dist/lib/selectors/auth-sel.d.ts.map +1 -1
  9. package/dist/lib/selectors/auth-sel.js +1 -3
  10. package/dist/lib/selectors/by-domain/auth.d.ts +8 -0
  11. package/dist/lib/selectors/by-domain/auth.d.ts.map +1 -0
  12. package/dist/lib/selectors/by-domain/auth.js +10 -0
  13. package/dist/lib/selectors/by-domain/block-editor.d.ts +8 -0
  14. package/dist/lib/selectors/by-domain/block-editor.d.ts.map +1 -0
  15. package/dist/lib/selectors/by-domain/block-editor.js +10 -0
  16. package/dist/lib/selectors/by-domain/common.d.ts +8 -0
  17. package/dist/lib/selectors/by-domain/common.d.ts.map +1 -0
  18. package/dist/lib/selectors/by-domain/common.js +10 -0
  19. package/dist/lib/selectors/by-domain/dashboard.d.ts +8 -0
  20. package/dist/lib/selectors/by-domain/dashboard.d.ts.map +1 -0
  21. package/dist/lib/selectors/by-domain/dashboard.js +10 -0
  22. package/dist/lib/selectors/by-domain/devtools.d.ts +8 -0
  23. package/dist/lib/selectors/by-domain/devtools.d.ts.map +1 -0
  24. package/dist/lib/selectors/by-domain/devtools.js +10 -0
  25. package/dist/lib/selectors/by-domain/entities.d.ts +8 -0
  26. package/dist/lib/selectors/by-domain/entities.d.ts.map +1 -0
  27. package/dist/lib/selectors/by-domain/entities.js +10 -0
  28. package/dist/lib/selectors/by-domain/global-search.d.ts +8 -0
  29. package/dist/lib/selectors/by-domain/global-search.d.ts.map +1 -0
  30. package/dist/lib/selectors/by-domain/global-search.js +10 -0
  31. package/dist/lib/selectors/by-domain/media.d.ts +8 -0
  32. package/dist/lib/selectors/by-domain/media.d.ts.map +1 -0
  33. package/dist/lib/selectors/by-domain/media.js +10 -0
  34. package/dist/lib/selectors/by-domain/patterns.d.ts +8 -0
  35. package/dist/lib/selectors/by-domain/patterns.d.ts.map +1 -0
  36. package/dist/lib/selectors/by-domain/patterns.js +10 -0
  37. package/dist/lib/selectors/by-domain/public.d.ts +8 -0
  38. package/dist/lib/selectors/by-domain/public.d.ts.map +1 -0
  39. package/dist/lib/selectors/by-domain/public.js +10 -0
  40. package/dist/lib/selectors/by-domain/settings.d.ts +8 -0
  41. package/dist/lib/selectors/by-domain/settings.d.ts.map +1 -0
  42. package/dist/lib/selectors/by-domain/settings.js +10 -0
  43. package/dist/lib/selectors/by-domain/superadmin.d.ts +8 -0
  44. package/dist/lib/selectors/by-domain/superadmin.d.ts.map +1 -0
  45. package/dist/lib/selectors/by-domain/superadmin.js +10 -0
  46. package/dist/lib/selectors/by-domain/taxonomies.d.ts +8 -0
  47. package/dist/lib/selectors/by-domain/taxonomies.d.ts.map +1 -0
  48. package/dist/lib/selectors/by-domain/taxonomies.js +10 -0
  49. package/dist/lib/selectors/by-domain/teams.d.ts +8 -0
  50. package/dist/lib/selectors/by-domain/teams.d.ts.map +1 -0
  51. package/dist/lib/selectors/by-domain/teams.js +10 -0
  52. package/dist/lib/selectors/core-selectors.d.ts +1 -0
  53. package/dist/lib/selectors/core-selectors.d.ts.map +1 -1
  54. package/dist/lib/selectors/domains/public.selectors.d.ts +1 -0
  55. package/dist/lib/selectors/domains/public.selectors.d.ts.map +1 -1
  56. package/dist/lib/selectors/domains/public.selectors.js +3 -1
  57. package/dist/lib/selectors/selectors.d.ts +2 -0
  58. package/dist/lib/selectors/selectors.d.ts.map +1 -1
  59. package/dist/lib/theme/ThemeProvider.d.ts.map +1 -1
  60. package/dist/lib/theme/ThemeProvider.js +7 -5
  61. package/dist/routes/(auth)/accept-invite/[token]/page.js +1 -1
  62. package/dist/routes/(auth)/forgot-password/page.js +1 -1
  63. package/dist/routes/(auth)/reset-password/page.js +1 -1
  64. package/dist/routes/(auth)/signup/page.cc.d.ts +2 -2
  65. package/dist/routes/(auth)/signup/page.d.ts +1 -1
  66. package/dist/routes/(auth)/signup/page.d.ts.map +1 -1
  67. package/dist/routes/(auth)/signup/page.js +1 -5
  68. package/dist/routes/(auth)/verify-email/page.js +1 -1
  69. package/dist/routes/(public)/docs/[section]/[page]/page.cc.js +1 -1
  70. package/dist/routes/(public)/docs/[section]/[page]/page.js +1 -1
  71. package/dist/routes/(public)/docs/layout.js +1 -1
  72. package/dist/routes/(public)/docs/page.js +1 -1
  73. package/dist/routes/_internal/default-public-layout.d.ts +5 -0
  74. package/dist/routes/_internal/default-public-layout.d.ts.map +1 -1
  75. package/dist/routes/_internal/default-public-layout.js +1 -2
  76. package/dist/routes/devtools/blocks/[slug]/page.d.ts +4 -1
  77. package/dist/routes/devtools/blocks/[slug]/page.d.ts.map +1 -1
  78. package/dist/routes/devtools/blocks/[slug]/page.js +2 -1
  79. package/dist/templates/features/blog/blocks/post-content/component.tsx +1 -1
  80. package/dist/templates/features/blog/entities/posts/posts.config.ts +0 -11
  81. package/dist/templates/features/pages/blocks/hero/component.tsx +1 -1
  82. package/dist/templates/features/pages/entities/pages/pages.config.ts +0 -11
  83. package/dist/templates/projects/blog/lib/block-selectors.ts +29 -0
  84. package/dist/templates/projects/blog/lib/selectors.ts +2 -9
  85. package/dist/templates/projects/blog/package.json +1 -4
  86. package/dist/templates/projects/crm/lib/block-selectors.ts +29 -0
  87. package/dist/templates/projects/crm/lib/selectors.ts +2 -9
  88. package/dist/templates/projects/crm/package.json +1 -1
  89. package/dist/templates/projects/crm/templates/dashboard/(main)/layout.tsx +2 -17
  90. package/dist/templates/projects/crm/templates/shared/CRMSidebarContext.tsx +23 -0
  91. package/dist/templates/projects/productivity/entities/boards/boards.service.ts +18 -18
  92. package/dist/templates/projects/productivity/entities/cards/cards.service.ts +18 -18
  93. package/dist/templates/projects/productivity/entities/lists/lists.service.ts +18 -18
  94. package/dist/templates/projects/productivity/lib/block-selectors.ts +29 -0
  95. package/dist/templates/projects/productivity/lib/selectors.ts +2 -9
  96. package/dist/templates/projects/productivity/package.json +1 -1
  97. package/dist/templates/projects/starter/lib/block-selectors.ts +28 -0
  98. package/dist/templates/projects/starter/lib/selectors.ts +2 -11
  99. package/package.json +6 -2
  100. package/templates/features/blog/blocks/post-content/component.tsx +1 -1
  101. package/templates/features/blog/entities/posts/posts.config.ts +0 -11
  102. package/templates/features/pages/blocks/hero/component.tsx +1 -1
  103. package/templates/features/pages/entities/pages/pages.config.ts +0 -11
  104. package/templates/projects/blog/lib/block-selectors.ts +29 -0
  105. package/templates/projects/blog/lib/selectors.ts +2 -9
  106. package/templates/projects/blog/package.json +1 -4
  107. package/templates/projects/crm/lib/block-selectors.ts +29 -0
  108. package/templates/projects/crm/lib/selectors.ts +2 -9
  109. package/templates/projects/crm/package.json +1 -1
  110. package/templates/projects/crm/templates/dashboard/(main)/layout.tsx +2 -17
  111. package/templates/projects/crm/templates/shared/CRMSidebarContext.tsx +23 -0
  112. package/templates/projects/productivity/entities/boards/boards.service.ts +18 -18
  113. package/templates/projects/productivity/entities/cards/cards.service.ts +18 -18
  114. package/templates/projects/productivity/entities/lists/lists.service.ts +18 -18
  115. package/templates/projects/productivity/lib/block-selectors.ts +29 -0
  116. package/templates/projects/productivity/lib/selectors.ts +2 -9
  117. package/templates/projects/productivity/package.json +1 -1
  118. package/templates/projects/starter/lib/block-selectors.ts +28 -0
  119. package/templates/projects/starter/lib/selectors.ts +2 -11
@@ -78,9 +78,9 @@ export class ListsService {
78
78
  */
79
79
  static async getById(id: string, userId: string): Promise<List | null> {
80
80
  const result = await queryOneWithRLS<DbList>(
81
- userId,
82
81
  `SELECT * FROM lists WHERE id = $1`,
83
- [id]
82
+ [id],
83
+ userId
84
84
  )
85
85
 
86
86
  return result ? mapDbList(result) : null
@@ -123,9 +123,9 @@ export class ListsService {
123
123
 
124
124
  // Get total count
125
125
  const countResult = await queryOneWithRLS<{ count: string }>(
126
- userId,
127
126
  `SELECT COUNT(*) as count FROM lists ${whereClause}`,
128
- params
127
+ params,
128
+ userId
129
129
  )
130
130
  const total = parseInt(countResult?.count || '0', 10)
131
131
 
@@ -137,9 +137,9 @@ export class ListsService {
137
137
 
138
138
  params.push(limit, offset)
139
139
  const lists = await queryWithRLS<DbList>(
140
- userId,
141
140
  `SELECT * FROM lists ${whereClause} ORDER BY ${validOrderBy} ${validOrderDir} LIMIT $${paramIndex++} OFFSET $${paramIndex++}`,
142
- params
141
+ params,
142
+ userId
143
143
  )
144
144
 
145
145
  return {
@@ -174,13 +174,13 @@ export class ListsService {
174
174
  teamId,
175
175
  } = data
176
176
 
177
- const result = await mutateWithRLS<DbList>(
178
- userId,
177
+ const result = (await mutateWithRLS<DbList>(
179
178
  `INSERT INTO lists (name, board_id, position, is_archived, user_id, team_id)
180
179
  VALUES ($1, $2, $3, $4, $5, $6)
181
180
  RETURNING *`,
182
- [name, boardId, position, isArchived, userId, teamId]
183
- )
181
+ [name, boardId, position, isArchived, userId, teamId],
182
+ userId
183
+ )).rows[0] ?? null
184
184
 
185
185
  if (!result) {
186
186
  throw new Error('Failed to create list')
@@ -224,11 +224,11 @@ export class ListsService {
224
224
  updates.push(`updated_at = NOW()`)
225
225
  params.push(id)
226
226
 
227
- const result = await mutateWithRLS<DbList>(
228
- userId,
227
+ const result = (await mutateWithRLS<DbList>(
229
228
  `UPDATE lists SET ${updates.join(', ')} WHERE id = $${paramIndex} RETURNING *`,
230
- params
231
- )
229
+ params,
230
+ userId
231
+ )).rows[0] ?? null
232
232
 
233
233
  if (!result) {
234
234
  throw new Error('List not found or access denied')
@@ -241,11 +241,11 @@ export class ListsService {
241
241
  * Delete a list with RLS
242
242
  */
243
243
  static async delete(userId: string, id: string): Promise<boolean> {
244
- const result = await mutateWithRLS<DbList>(
245
- userId,
244
+ const result = (await mutateWithRLS<DbList>(
246
245
  `DELETE FROM lists WHERE id = $1 RETURNING *`,
247
- [id]
248
- )
246
+ [id],
247
+ userId
248
+ )).rows[0] ?? null
249
249
 
250
250
  return result !== null
251
251
  }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Block selectors, and a `sel` bound to them alone.
3
+ *
4
+ * Block components import `sel` from here, not from ./selectors: that file merges CORE_SELECTORS (every domain's
5
+ * map, ~10 kB gzip), and the loader that renders a page imports every block, so a block importing it puts the
6
+ * whole map on each public page. ./selectors re-exports BLOCK_SELECTORS, so Cypress still reaches the same paths.
7
+ */
8
+
9
+ import { createSelectorHelpers } from '@nextsparkjs/core/lib/selectors/selector-factory'
10
+
11
+ /**
12
+ * Block-specific selectors for the productivity theme.
13
+ * Each block has at minimum a 'container' selector.
14
+ * Dynamic selectors use {index} placeholder.
15
+ */
16
+ export const BLOCK_SELECTORS = {
17
+ // Blocks the pages and blog content features copy into the project (blocks/hero, blocks/post-content)
18
+ hero: {
19
+ container: 'block-hero',
20
+ cta: 'hero-cta',
21
+ },
22
+ postContent: {
23
+ container: 'block-post-content',
24
+ divider: 'post-content-divider',
25
+ cta: 'post-content-cta',
26
+ },
27
+ } as const
28
+
29
+ export const { sel } = createSelectorHelpers({ blocks: BLOCK_SELECTORS })
@@ -10,20 +10,13 @@
10
10
  */
11
11
 
12
12
  import { createSelectorHelpers, CORE_SELECTORS } from '@nextsparkjs/core/selectors'
13
+ import { BLOCK_SELECTORS } from './block-selectors'
13
14
 
14
15
  // =============================================================================
15
16
  // BLOCK SELECTORS
16
17
  // =============================================================================
17
18
 
18
- /**
19
- * Block-specific selectors for the productivity theme.
20
- * Each block has at minimum a 'container' selector.
21
- * Dynamic selectors use {index} placeholder.
22
- */
23
- export const BLOCK_SELECTORS = {
24
- // Productivity theme currently has no custom blocks
25
- // Add block selectors here when blocks are created
26
- } as const
19
+ export { BLOCK_SELECTORS }
27
20
 
28
21
  // =============================================================================
29
22
  // ENTITY SELECTORS
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nextsparkjs/theme-productivity",
3
3
  "version": "0.1.0-beta.192",
4
- "private": false,
4
+ "private": true,
5
5
  "type": "module",
6
6
  "main": "./config/theme.config.ts",
7
7
  "requiredPlugins": [],
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Block selectors, and a `sel` bound to them alone.
3
+ *
4
+ * Block components import `sel` from here, not from ./selectors: that file merges CORE_SELECTORS (every domain's
5
+ * map, ~10 kB gzip), and the loader that renders a page imports every block, so a block importing it puts the
6
+ * whole map on each public page. ./selectors re-exports BLOCK_SELECTORS, so Cypress still reaches the same paths.
7
+ */
8
+
9
+ import { createSelectorHelpers } from '@nextsparkjs/core/lib/selectors/selector-factory'
10
+
11
+ /**
12
+ * Block-specific selectors for the starter theme.
13
+ * Each block has at minimum a 'container' selector.
14
+ * Dynamic selectors use {index} placeholder.
15
+ */
16
+ export const BLOCK_SELECTORS = {
17
+ hero: {
18
+ container: 'block-hero',
19
+ cta: 'hero-cta',
20
+ },
21
+ postContent: {
22
+ container: 'block-post-content',
23
+ divider: 'post-content-divider',
24
+ cta: 'post-content-cta',
25
+ },
26
+ } as const
27
+
28
+ export const { sel } = createSelectorHelpers({ blocks: BLOCK_SELECTORS })
@@ -10,22 +10,13 @@
10
10
  */
11
11
 
12
12
  import { createSelectorHelpers, CORE_SELECTORS } from '@nextsparkjs/core/selectors'
13
+ import { BLOCK_SELECTORS } from './block-selectors'
13
14
 
14
15
  // =============================================================================
15
16
  // BLOCK SELECTORS
16
17
  // =============================================================================
17
18
 
18
- /**
19
- * Block-specific selectors for the starter theme.
20
- * Each block has at minimum a 'container' selector.
21
- * Dynamic selectors use {index} placeholder.
22
- */
23
- export const BLOCK_SELECTORS = {
24
- hero: {
25
- container: 'block-hero',
26
- cta: 'hero-cta',
27
- },
28
- } as const
19
+ export { BLOCK_SELECTORS }
29
20
 
30
21
  // =============================================================================
31
22
  // THEME SELECTORS (CORE + BLOCKS)