@qwickapps/cms 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/LICENSE +45 -0
  2. package/README.md +203 -0
  3. package/dist/admin/components/AccordionItemRowLabel.d.ts +20 -0
  4. package/dist/admin/components/AccordionItemRowLabel.d.ts.map +1 -0
  5. package/dist/admin/components/AccordionItemRowLabel.js +47 -0
  6. package/dist/admin/components/AccordionItemRowLabel.js.map +1 -0
  7. package/dist/admin/components/BlockRowLabel.d.ts +19 -0
  8. package/dist/admin/components/BlockRowLabel.d.ts.map +1 -0
  9. package/dist/admin/components/BlockRowLabel.js +52 -0
  10. package/dist/admin/components/BlockRowLabel.js.map +1 -0
  11. package/dist/admin/components/ButtonRowLabel.d.ts +23 -0
  12. package/dist/admin/components/ButtonRowLabel.d.ts.map +1 -0
  13. package/dist/admin/components/ButtonRowLabel.js +63 -0
  14. package/dist/admin/components/ButtonRowLabel.js.map +1 -0
  15. package/dist/admin/components/CardRowLabel.d.ts +23 -0
  16. package/dist/admin/components/CardRowLabel.d.ts.map +1 -0
  17. package/dist/admin/components/CardRowLabel.js +59 -0
  18. package/dist/admin/components/CardRowLabel.js.map +1 -0
  19. package/dist/admin/components/ContentPreview.d.ts +12 -0
  20. package/dist/admin/components/ContentPreview.d.ts.map +1 -0
  21. package/dist/admin/components/ContentPreview.js +95 -0
  22. package/dist/admin/components/ContentPreview.js.map +1 -0
  23. package/dist/admin/components/Dashboard.d.ts +13 -0
  24. package/dist/admin/components/Dashboard.d.ts.map +1 -0
  25. package/dist/admin/components/Dashboard.js +7 -0
  26. package/dist/admin/components/Dashboard.js.map +1 -0
  27. package/dist/admin/components/DashboardContent.d.ts +11 -0
  28. package/dist/admin/components/DashboardContent.d.ts.map +1 -0
  29. package/dist/admin/components/DashboardContent.js +129 -0
  30. package/dist/admin/components/DashboardContent.js.map +1 -0
  31. package/dist/admin/components/FormFieldRowLabel.d.ts +21 -0
  32. package/dist/admin/components/FormFieldRowLabel.d.ts.map +1 -0
  33. package/dist/admin/components/FormFieldRowLabel.js +47 -0
  34. package/dist/admin/components/FormFieldRowLabel.js.map +1 -0
  35. package/dist/admin/components/Icon.d.ts +10 -0
  36. package/dist/admin/components/Icon.d.ts.map +1 -0
  37. package/dist/admin/components/Icon.js +16 -0
  38. package/dist/admin/components/Icon.js.map +1 -0
  39. package/dist/admin/components/Logo.d.ts +10 -0
  40. package/dist/admin/components/Logo.d.ts.map +1 -0
  41. package/dist/admin/components/Logo.js +16 -0
  42. package/dist/admin/components/Logo.js.map +1 -0
  43. package/dist/admin/components/NavigationItemRowLabel.d.ts +21 -0
  44. package/dist/admin/components/NavigationItemRowLabel.d.ts.map +1 -0
  45. package/dist/admin/components/NavigationItemRowLabel.js +43 -0
  46. package/dist/admin/components/NavigationItemRowLabel.js.map +1 -0
  47. package/dist/admin/components/NavigationSubItemRowLabel.d.ts +19 -0
  48. package/dist/admin/components/NavigationSubItemRowLabel.d.ts.map +1 -0
  49. package/dist/admin/components/NavigationSubItemRowLabel.js +32 -0
  50. package/dist/admin/components/NavigationSubItemRowLabel.js.map +1 -0
  51. package/dist/admin/components/PagesListHeader.d.ts +13 -0
  52. package/dist/admin/components/PagesListHeader.d.ts.map +1 -0
  53. package/dist/admin/components/PagesListHeader.js +48 -0
  54. package/dist/admin/components/PagesListHeader.js.map +1 -0
  55. package/dist/admin/components/ProductsListHeader.d.ts +13 -0
  56. package/dist/admin/components/ProductsListHeader.d.ts.map +1 -0
  57. package/dist/admin/components/ProductsListHeader.js +55 -0
  58. package/dist/admin/components/ProductsListHeader.js.map +1 -0
  59. package/dist/admin/components/styles/CollectionListHeader.css +161 -0
  60. package/dist/admin/components/styles/ContentPreview.css +416 -0
  61. package/dist/admin/components/styles/Dashboard.css +338 -0
  62. package/dist/admin/fields/ColorInput.d.ts +13 -0
  63. package/dist/admin/fields/ColorInput.d.ts.map +1 -0
  64. package/dist/admin/fields/ColorInput.js +201 -0
  65. package/dist/admin/fields/ColorInput.js.map +1 -0
  66. package/dist/admin/fields/index.d.ts +9 -0
  67. package/dist/admin/fields/index.d.ts.map +1 -0
  68. package/dist/admin/fields/index.js +9 -0
  69. package/dist/admin/fields/index.js.map +1 -0
  70. package/dist/admin/index.d.ts +24 -0
  71. package/dist/admin/index.d.ts.map +1 -0
  72. package/dist/admin/index.js +30 -0
  73. package/dist/admin/index.js.map +1 -0
  74. package/dist/blocks/ContentBlocks.d.ts +75 -0
  75. package/dist/blocks/ContentBlocks.d.ts.map +1 -0
  76. package/dist/blocks/ContentBlocks.js +1241 -0
  77. package/dist/blocks/ContentBlocks.js.map +1 -0
  78. package/dist/blocks/index.d.ts +2 -0
  79. package/dist/blocks/index.d.ts.map +1 -0
  80. package/dist/blocks/index.js +3 -0
  81. package/dist/blocks/index.js.map +1 -0
  82. package/dist/client/PayloadAPIClient.d.ts +65 -0
  83. package/dist/client/PayloadAPIClient.d.ts.map +1 -0
  84. package/dist/client/PayloadAPIClient.js +167 -0
  85. package/dist/client/PayloadAPIClient.js.map +1 -0
  86. package/dist/collections/Automations.d.ts +12 -0
  87. package/dist/collections/Automations.d.ts.map +1 -0
  88. package/dist/collections/Automations.js +741 -0
  89. package/dist/collections/Automations.js.map +1 -0
  90. package/dist/collections/Features.d.ts +3 -0
  91. package/dist/collections/Features.d.ts.map +1 -0
  92. package/dist/collections/Features.js +69 -0
  93. package/dist/collections/Features.js.map +1 -0
  94. package/dist/collections/Footer.d.ts +11 -0
  95. package/dist/collections/Footer.d.ts.map +1 -0
  96. package/dist/collections/Footer.js +130 -0
  97. package/dist/collections/Footer.js.map +1 -0
  98. package/dist/collections/FormSubmissions.d.ts +3 -0
  99. package/dist/collections/FormSubmissions.d.ts.map +1 -0
  100. package/dist/collections/FormSubmissions.js +119 -0
  101. package/dist/collections/FormSubmissions.js.map +1 -0
  102. package/dist/collections/Forms.d.ts +16 -0
  103. package/dist/collections/Forms.d.ts.map +1 -0
  104. package/dist/collections/Forms.js +308 -0
  105. package/dist/collections/Forms.js.map +1 -0
  106. package/dist/collections/HeroBlocks.d.ts +3 -0
  107. package/dist/collections/HeroBlocks.d.ts.map +1 -0
  108. package/dist/collections/HeroBlocks.js +115 -0
  109. package/dist/collections/HeroBlocks.js.map +1 -0
  110. package/dist/collections/Media.d.ts +3 -0
  111. package/dist/collections/Media.d.ts.map +1 -0
  112. package/dist/collections/Media.js +26 -0
  113. package/dist/collections/Media.js.map +1 -0
  114. package/dist/collections/Navigation.d.ts +3 -0
  115. package/dist/collections/Navigation.d.ts.map +1 -0
  116. package/dist/collections/Navigation.js +106 -0
  117. package/dist/collections/Navigation.js.map +1 -0
  118. package/dist/collections/Pages.d.ts +3 -0
  119. package/dist/collections/Pages.d.ts.map +1 -0
  120. package/dist/collections/Pages.js +94 -0
  121. package/dist/collections/Pages.js.map +1 -0
  122. package/dist/collections/Posts.d.ts +3 -0
  123. package/dist/collections/Posts.d.ts.map +1 -0
  124. package/dist/collections/Posts.js +134 -0
  125. package/dist/collections/Posts.js.map +1 -0
  126. package/dist/collections/Products.d.ts +3 -0
  127. package/dist/collections/Products.d.ts.map +1 -0
  128. package/dist/collections/Products.js +264 -0
  129. package/dist/collections/Products.js.map +1 -0
  130. package/dist/collections/Users.d.ts +3 -0
  131. package/dist/collections/Users.d.ts.map +1 -0
  132. package/dist/collections/Users.js +53 -0
  133. package/dist/collections/Users.js.map +1 -0
  134. package/dist/collections/hooks/index.d.ts +9 -0
  135. package/dist/collections/hooks/index.d.ts.map +1 -0
  136. package/dist/collections/hooks/index.js +9 -0
  137. package/dist/collections/hooks/index.js.map +1 -0
  138. package/dist/collections/hooks/loggingHooks.d.ts +45 -0
  139. package/dist/collections/hooks/loggingHooks.d.ts.map +1 -0
  140. package/dist/collections/hooks/loggingHooks.js +109 -0
  141. package/dist/collections/hooks/loggingHooks.js.map +1 -0
  142. package/dist/collections/index.d.ts +14 -0
  143. package/dist/collections/index.d.ts.map +1 -0
  144. package/dist/collections/index.js +16 -0
  145. package/dist/collections/index.js.map +1 -0
  146. package/dist/components/index.d.ts +2 -0
  147. package/dist/components/index.d.ts.map +1 -0
  148. package/dist/components/index.js +4 -0
  149. package/dist/components/index.js.map +1 -0
  150. package/dist/globals/AdvancedSettings.d.ts +8 -0
  151. package/dist/globals/AdvancedSettings.d.ts.map +1 -0
  152. package/dist/globals/AdvancedSettings.js +157 -0
  153. package/dist/globals/AdvancedSettings.js.map +1 -0
  154. package/dist/globals/Integrations.d.ts +8 -0
  155. package/dist/globals/Integrations.d.ts.map +1 -0
  156. package/dist/globals/Integrations.js +270 -0
  157. package/dist/globals/Integrations.js.map +1 -0
  158. package/dist/globals/SiteSettings.d.ts +8 -0
  159. package/dist/globals/SiteSettings.d.ts.map +1 -0
  160. package/dist/globals/SiteSettings.js +258 -0
  161. package/dist/globals/SiteSettings.js.map +1 -0
  162. package/dist/globals/ThemeSettings.d.ts +11 -0
  163. package/dist/globals/ThemeSettings.d.ts.map +1 -0
  164. package/dist/globals/ThemeSettings.js +92 -0
  165. package/dist/globals/ThemeSettings.js.map +1 -0
  166. package/dist/globals/index.d.ts +5 -0
  167. package/dist/globals/index.d.ts.map +1 -0
  168. package/dist/globals/index.js +6 -0
  169. package/dist/globals/index.js.map +1 -0
  170. package/dist/index.d.ts +9 -0
  171. package/dist/index.d.ts.map +1 -0
  172. package/dist/index.js +14 -0
  173. package/dist/index.js.map +1 -0
  174. package/dist/logging/index.d.ts +73 -0
  175. package/dist/logging/index.d.ts.map +1 -0
  176. package/dist/logging/index.js +190 -0
  177. package/dist/logging/index.js.map +1 -0
  178. package/dist/nextjs/BlockRenderer.d.ts +227 -0
  179. package/dist/nextjs/BlockRenderer.d.ts.map +1 -0
  180. package/dist/nextjs/BlockRenderer.js +358 -0
  181. package/dist/nextjs/BlockRenderer.js.map +1 -0
  182. package/dist/nextjs/ClientHomePage.d.ts +6 -0
  183. package/dist/nextjs/ClientHomePage.d.ts.map +1 -0
  184. package/dist/nextjs/ClientHomePage.js +17 -0
  185. package/dist/nextjs/ClientHomePage.js.map +1 -0
  186. package/dist/nextjs/ClientSideQwickApp.d.ts +23 -0
  187. package/dist/nextjs/ClientSideQwickApp.d.ts.map +1 -0
  188. package/dist/nextjs/ClientSideQwickApp.js +50 -0
  189. package/dist/nextjs/ClientSideQwickApp.js.map +1 -0
  190. package/dist/nextjs/DynamicQwickApp.d.ts +9 -0
  191. package/dist/nextjs/DynamicQwickApp.d.ts.map +1 -0
  192. package/dist/nextjs/DynamicQwickApp.js +19 -0
  193. package/dist/nextjs/DynamicQwickApp.js.map +1 -0
  194. package/dist/nextjs/FooterFromSettings.d.ts +6 -0
  195. package/dist/nextjs/FooterFromSettings.d.ts.map +1 -0
  196. package/dist/nextjs/FooterFromSettings.js +72 -0
  197. package/dist/nextjs/FooterFromSettings.js.map +1 -0
  198. package/dist/nextjs/FormBlockComponent.d.ts +25 -0
  199. package/dist/nextjs/FormBlockComponent.d.ts.map +1 -0
  200. package/dist/nextjs/FormBlockComponent.js +110 -0
  201. package/dist/nextjs/FormBlockComponent.js.map +1 -0
  202. package/dist/nextjs/HomePageContent.d.ts +6 -0
  203. package/dist/nextjs/HomePageContent.d.ts.map +1 -0
  204. package/dist/nextjs/HomePageContent.js +50 -0
  205. package/dist/nextjs/HomePageContent.js.map +1 -0
  206. package/dist/nextjs/LivePreviewClient.d.ts +40 -0
  207. package/dist/nextjs/LivePreviewClient.d.ts.map +1 -0
  208. package/dist/nextjs/LivePreviewClient.js +35 -0
  209. package/dist/nextjs/LivePreviewClient.js.map +1 -0
  210. package/dist/nextjs/RefreshRouteOnSave.d.ts +31 -0
  211. package/dist/nextjs/RefreshRouteOnSave.d.ts.map +1 -0
  212. package/dist/nextjs/RefreshRouteOnSave.js +59 -0
  213. package/dist/nextjs/RefreshRouteOnSave.js.map +1 -0
  214. package/dist/nextjs/ScriptsInjector.d.ts +2 -0
  215. package/dist/nextjs/ScriptsInjector.d.ts.map +1 -0
  216. package/dist/nextjs/ScriptsInjector.js +73 -0
  217. package/dist/nextjs/ScriptsInjector.js.map +1 -0
  218. package/dist/nextjs/ServerQwickApp.d.ts +13 -0
  219. package/dist/nextjs/ServerQwickApp.d.ts.map +1 -0
  220. package/dist/nextjs/ServerQwickApp.js +159 -0
  221. package/dist/nextjs/ServerQwickApp.js.map +1 -0
  222. package/dist/nextjs/SettingsProvider.d.ts +110 -0
  223. package/dist/nextjs/SettingsProvider.d.ts.map +1 -0
  224. package/dist/nextjs/SettingsProvider.js +107 -0
  225. package/dist/nextjs/SettingsProvider.js.map +1 -0
  226. package/dist/nextjs/SiteLogo.d.ts +35 -0
  227. package/dist/nextjs/SiteLogo.d.ts.map +1 -0
  228. package/dist/nextjs/SiteLogo.js +105 -0
  229. package/dist/nextjs/SiteLogo.js.map +1 -0
  230. package/dist/nextjs/framework.d.ts +19 -0
  231. package/dist/nextjs/framework.d.ts.map +1 -0
  232. package/dist/nextjs/framework.js +35 -0
  233. package/dist/nextjs/framework.js.map +1 -0
  234. package/dist/nextjs/index.d.ts +38 -0
  235. package/dist/nextjs/index.d.ts.map +1 -0
  236. package/dist/nextjs/index.js +47 -0
  237. package/dist/nextjs/index.js.map +1 -0
  238. package/dist/nextjs/metadata.d.ts +20 -0
  239. package/dist/nextjs/metadata.d.ts.map +1 -0
  240. package/dist/nextjs/metadata.js +107 -0
  241. package/dist/nextjs/metadata.js.map +1 -0
  242. package/dist/plugins/index.d.ts +2 -0
  243. package/dist/plugins/index.d.ts.map +1 -0
  244. package/dist/plugins/index.js +3 -0
  245. package/dist/plugins/index.js.map +1 -0
  246. package/dist/plugins/qwickapps-plugin.d.ts +78 -0
  247. package/dist/plugins/qwickapps-plugin.d.ts.map +1 -0
  248. package/dist/plugins/qwickapps-plugin.js +154 -0
  249. package/dist/plugins/qwickapps-plugin.js.map +1 -0
  250. package/dist/providers/PayloadDataProvider.d.ts +72 -0
  251. package/dist/providers/PayloadDataProvider.d.ts.map +1 -0
  252. package/dist/providers/PayloadDataProvider.js +222 -0
  253. package/dist/providers/PayloadDataProvider.js.map +1 -0
  254. package/dist/providers/index.d.ts +2 -0
  255. package/dist/providers/index.d.ts.map +1 -0
  256. package/dist/providers/index.js +3 -0
  257. package/dist/providers/index.js.map +1 -0
  258. package/dist/styles/admin-theme.css +352 -0
  259. package/package.json +104 -0
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Payload CMS Collection Logging Hooks
3
+ *
4
+ * Provides reusable hooks for logging collection operations.
5
+ * Only logs important events - errors, warnings, and security-relevant operations.
6
+ *
7
+ * What is logged:
8
+ * - Create/Update/Delete failures
9
+ * - Authentication-related operations on Users collection
10
+ * - Form submission errors
11
+ * - Validation failures
12
+ *
13
+ * What is NOT logged (routine traffic):
14
+ * - Successful read operations
15
+ * - Normal CRUD operations (unless they fail)
16
+ *
17
+ * @module @qwickapps/cms/collections/hooks/loggingHooks
18
+ */
19
+ import { cmsLoggers } from '../../logging/index.js';
20
+ const log = cmsLoggers.collections;
21
+ /**
22
+ * Hook to log collection errors
23
+ * Attach to afterError hook on collections
24
+ */
25
+ export const logCollectionError = async ({ error, collection, context, req, }) => {
26
+ log.error('Collection operation failed', {
27
+ collection: collection?.slug,
28
+ error: error?.message,
29
+ stack: error?.stack,
30
+ userId: req?.user?.id,
31
+ });
32
+ // Re-throw to maintain normal error handling
33
+ throw error;
34
+ };
35
+ /**
36
+ * Hook to log form submission creation
37
+ * Use on FormSubmissions collection
38
+ */
39
+ export const logFormSubmission = async ({ doc, operation, collection, req, }) => {
40
+ if (operation === 'create' && collection?.slug === 'form-submissions') {
41
+ // Log form submissions for troubleshooting (not as error, but as info for tracking)
42
+ log.info('Form submitted', {
43
+ formName: doc.formName,
44
+ submitterEmail: doc.submitterEmail,
45
+ status: doc.status,
46
+ });
47
+ }
48
+ return doc;
49
+ };
50
+ /**
51
+ * Hook to log user authentication events
52
+ * Use on Users collection
53
+ */
54
+ export const logUserAuthEvent = async ({ doc, previousDoc, operation, collection, req, }) => {
55
+ if (collection?.slug !== 'users')
56
+ return doc;
57
+ // Log role changes (security relevant)
58
+ if (operation === 'update' && previousDoc?.roles && doc?.roles) {
59
+ const previousRoles = Array.isArray(previousDoc.roles) ? previousDoc.roles : [];
60
+ const newRoles = Array.isArray(doc.roles) ? doc.roles : [];
61
+ if (JSON.stringify(previousRoles.sort()) !== JSON.stringify(newRoles.sort())) {
62
+ log.warn('User roles changed', {
63
+ userId: doc.id,
64
+ email: doc.email,
65
+ previousRoles,
66
+ newRoles,
67
+ changedBy: req?.user?.id,
68
+ });
69
+ }
70
+ }
71
+ // Log new user creation
72
+ if (operation === 'create') {
73
+ log.info('New user created', {
74
+ userId: doc.id,
75
+ email: doc.email,
76
+ roles: doc.roles,
77
+ });
78
+ }
79
+ return doc;
80
+ };
81
+ /**
82
+ * Hook to log deletion of important records
83
+ * Use on collections where deletion should be tracked
84
+ */
85
+ export const logDeletion = async ({ doc, collection, req, }) => {
86
+ log.warn('Record deleted', {
87
+ collection: collection?.slug,
88
+ recordId: doc?.id,
89
+ deletedBy: req?.user?.id,
90
+ });
91
+ return doc;
92
+ };
93
+ /**
94
+ * Hook to log validation errors before save
95
+ * Useful for debugging form/data issues
96
+ */
97
+ export const logValidationContext = async ({ data, originalDoc, operation, collection, req, context, }) => {
98
+ // Only log if there's a validation context set (by other hooks)
99
+ if (context?.validationErrors) {
100
+ log.warn('Validation errors detected', {
101
+ collection: collection?.slug,
102
+ operation,
103
+ errors: context.validationErrors,
104
+ userId: req?.user?.id,
105
+ });
106
+ }
107
+ return data;
108
+ };
109
+ //# sourceMappingURL=loggingHooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loggingHooks.js","sourceRoot":"","sources":["../../../src/collections/hooks/loggingHooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export { Automations } from './Automations.js';
2
+ export { Features } from './Features.js';
3
+ export { Footer } from './Footer.js';
4
+ export { FormSubmissions } from './FormSubmissions.js';
5
+ export { Forms } from './Forms.js';
6
+ export { HeroBlocks } from './HeroBlocks.js';
7
+ export { Media } from './Media.js';
8
+ export { Navigation } from './Navigation.js';
9
+ export { Pages } from './Pages.js';
10
+ export { Posts } from './Posts.js';
11
+ export { Products } from './Products.js';
12
+ export { Users } from './Users.js';
13
+ export * from './hooks/index.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/collections/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAGlC,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,16 @@
1
+ // QwickApps CMS - Collections
2
+ export { Automations } from './Automations.js';
3
+ export { Features } from './Features.js';
4
+ export { Footer } from './Footer.js';
5
+ export { FormSubmissions } from './FormSubmissions.js';
6
+ export { Forms } from './Forms.js';
7
+ export { HeroBlocks } from './HeroBlocks.js';
8
+ export { Media } from './Media.js';
9
+ export { Navigation } from './Navigation.js';
10
+ export { Pages } from './Pages.js';
11
+ export { Posts } from './Posts.js';
12
+ export { Products } from './Products.js';
13
+ export { Users } from './Users.js';
14
+ // Export hooks for use in consuming applications
15
+ export * from './hooks/index.js';
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/collections/index.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC,iDAAiD;AACjD,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAA"}
@@ -0,0 +1,4 @@
1
+ // QwickApps CMS - Components
2
+ // Admin components moved to /admin directory - use @qwickapps/cms/admin instead
3
+ export {};
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,gFAAgF"}
@@ -0,0 +1,8 @@
1
+ import { GlobalConfig } from 'payload';
2
+ /**
3
+ * Advanced Settings - Custom scripts, SEO, and maintenance mode
4
+ *
5
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
6
+ */
7
+ export declare const AdvancedSettings: GlobalConfig;
8
+ //# sourceMappingURL=AdvancedSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdvancedSettings.d.ts","sourceRoot":"","sources":["../../src/globals/AdvancedSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,YAwJ9B,CAAC"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * Advanced Settings - Custom scripts, SEO, and maintenance mode
3
+ *
4
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
5
+ */
6
+ export const AdvancedSettings = {
7
+ slug: 'advanced-settings',
8
+ label: 'Advanced',
9
+ admin: {
10
+ description: 'Advanced configuration for custom scripts, SEO defaults, and maintenance mode',
11
+ group: 'Settings',
12
+ },
13
+ access: {
14
+ read: () => true,
15
+ update: ({ req: { user } }) => !!user,
16
+ },
17
+ fields: [
18
+ // SEO Defaults
19
+ {
20
+ type: 'collapsible',
21
+ label: 'SEO Defaults',
22
+ admin: {
23
+ description: 'Default SEO settings used when pages don\'t have their own meta tags.',
24
+ },
25
+ fields: [
26
+ {
27
+ name: 'seo',
28
+ type: 'group',
29
+ fields: [
30
+ {
31
+ name: 'defaultTitle',
32
+ type: 'text',
33
+ label: 'Default Page Title',
34
+ admin: {
35
+ description: 'Used as fallback when page doesn\'t have a custom title (e.g., "Your Site Name - Tagline")',
36
+ },
37
+ },
38
+ {
39
+ name: 'defaultDescription',
40
+ type: 'textarea',
41
+ label: 'Default Meta Description',
42
+ admin: {
43
+ description: 'Used as fallback for meta description tag (150-160 characters recommended)',
44
+ },
45
+ },
46
+ {
47
+ name: 'defaultKeywords',
48
+ type: 'text',
49
+ label: 'Default Keywords',
50
+ admin: {
51
+ description: 'Comma-separated keywords (note: most search engines ignore this now)',
52
+ },
53
+ },
54
+ {
55
+ name: 'defaultOgImage',
56
+ type: 'upload',
57
+ relationTo: 'media',
58
+ label: 'Default Open Graph Image',
59
+ admin: {
60
+ description: 'Default image for social media shares (recommended: 1200x630 pixels)',
61
+ },
62
+ },
63
+ ],
64
+ },
65
+ ],
66
+ },
67
+ // Custom Scripts & CSS
68
+ {
69
+ type: 'collapsible',
70
+ label: 'Custom Scripts & CSS',
71
+ admin: {
72
+ description: 'Add custom JavaScript and CSS to your site. ⚠️ Use with caution - incorrect code can break your site.',
73
+ },
74
+ fields: [
75
+ {
76
+ name: 'customScripts',
77
+ type: 'group',
78
+ fields: [
79
+ {
80
+ name: 'headerScripts',
81
+ type: 'code',
82
+ label: 'Header Scripts',
83
+ admin: {
84
+ description: 'JavaScript code injected in <head> section. Runs before page content loads. Use for critical scripts, custom analytics, or third-party integrations.',
85
+ language: 'javascript',
86
+ },
87
+ },
88
+ {
89
+ name: 'footerScripts',
90
+ type: 'code',
91
+ label: 'Footer Scripts',
92
+ admin: {
93
+ description: 'JavaScript code injected before </body>. Runs after page content loads. Recommended for non-critical scripts to improve page load speed.',
94
+ language: 'javascript',
95
+ },
96
+ },
97
+ {
98
+ name: 'customCss',
99
+ type: 'code',
100
+ label: 'Custom CSS',
101
+ admin: {
102
+ description: 'Custom CSS styles applied globally across your site. Use for minor style tweaks without editing theme files.',
103
+ language: 'css',
104
+ },
105
+ },
106
+ ],
107
+ },
108
+ ],
109
+ },
110
+ // Maintenance Mode
111
+ {
112
+ type: 'collapsible',
113
+ label: 'Maintenance Mode',
114
+ admin: {
115
+ description: 'Temporarily take your site offline while you perform updates or maintenance.',
116
+ },
117
+ fields: [
118
+ {
119
+ name: 'maintenance',
120
+ type: 'group',
121
+ fields: [
122
+ {
123
+ name: 'enabled',
124
+ type: 'checkbox',
125
+ label: 'Enable Maintenance Mode',
126
+ defaultValue: false,
127
+ admin: {
128
+ description: '⚠️ When enabled, visitors will see a maintenance page. Admin users can still access the site.',
129
+ },
130
+ },
131
+ {
132
+ name: 'message',
133
+ type: 'textarea',
134
+ label: 'Maintenance Message',
135
+ defaultValue: 'We are currently performing scheduled maintenance. We\'ll be back soon!',
136
+ admin: {
137
+ description: 'Message displayed to visitors during maintenance',
138
+ condition: (data, siblingData) => siblingData?.enabled,
139
+ },
140
+ },
141
+ {
142
+ name: 'allowedIPs',
143
+ type: 'textarea',
144
+ label: 'Allowed IP Addresses',
145
+ admin: {
146
+ description: 'Comma-separated list of IP addresses that can bypass maintenance mode (e.g., 192.168.1.1, 10.0.0.5)',
147
+ placeholder: '192.168.1.1, 10.0.0.5',
148
+ condition: (data, siblingData) => siblingData?.enabled,
149
+ },
150
+ },
151
+ ],
152
+ },
153
+ ],
154
+ },
155
+ ],
156
+ };
157
+ //# sourceMappingURL=AdvancedSettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdvancedSettings.js","sourceRoot":"","sources":["../../src/globals/AdvancedSettings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { GlobalConfig } from 'payload';
2
+ /**
3
+ * Integrations Settings - Third-party services (Analytics, CAPTCHA, etc.)
4
+ *
5
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
6
+ */
7
+ export declare const Integrations: GlobalConfig;
8
+ //# sourceMappingURL=Integrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Integrations.d.ts","sourceRoot":"","sources":["../../src/globals/Integrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,YAyQ1B,CAAC"}
@@ -0,0 +1,270 @@
1
+ /**
2
+ * Integrations Settings - Third-party services (Analytics, CAPTCHA, etc.)
3
+ *
4
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
5
+ */
6
+ export const Integrations = {
7
+ slug: 'integrations',
8
+ label: 'Integrations',
9
+ admin: {
10
+ description: 'Configure third-party services and integrations',
11
+ group: 'Settings',
12
+ },
13
+ access: {
14
+ read: () => true,
15
+ update: ({ req: { user } }) => !!user,
16
+ },
17
+ fields: [
18
+ // Analytics & Tracking
19
+ {
20
+ type: 'collapsible',
21
+ label: 'Analytics & Tracking',
22
+ admin: {
23
+ description: 'Track visitor behavior and measure site performance with analytics tools.',
24
+ },
25
+ fields: [
26
+ {
27
+ name: 'googleAnalytics',
28
+ type: 'group',
29
+ label: 'Google Analytics (GA4)',
30
+ admin: {
31
+ description: 'Google Analytics 4 provides insights into user behavior and traffic sources. Get your Measurement ID from: https://analytics.google.com',
32
+ },
33
+ fields: [
34
+ {
35
+ name: 'enabled',
36
+ type: 'checkbox',
37
+ label: 'Enable Google Analytics',
38
+ defaultValue: false,
39
+ },
40
+ {
41
+ name: 'measurementId',
42
+ type: 'text',
43
+ label: 'Measurement ID',
44
+ admin: {
45
+ description: 'Format: G-XXXXXXXXXX (found in Analytics Admin → Data Streams → Web Stream Details)',
46
+ placeholder: 'G-XXXXXXXXXX',
47
+ condition: (data, siblingData) => siblingData?.enabled,
48
+ },
49
+ },
50
+ ],
51
+ },
52
+ {
53
+ name: 'googleTagManager',
54
+ type: 'group',
55
+ label: 'Google Tag Manager',
56
+ admin: {
57
+ description: 'Manage all your marketing tags in one place. Create a container at: https://tagmanager.google.com',
58
+ },
59
+ fields: [
60
+ {
61
+ name: 'enabled',
62
+ type: 'checkbox',
63
+ label: 'Enable Google Tag Manager',
64
+ defaultValue: false,
65
+ },
66
+ {
67
+ name: 'containerId',
68
+ type: 'text',
69
+ label: 'Container ID',
70
+ admin: {
71
+ description: 'Format: GTM-XXXXXXX (found in Tag Manager workspace)',
72
+ placeholder: 'GTM-XXXXXXX',
73
+ condition: (data, siblingData) => siblingData?.enabled,
74
+ },
75
+ },
76
+ ],
77
+ },
78
+ {
79
+ name: 'facebookPixel',
80
+ type: 'group',
81
+ label: 'Facebook Pixel',
82
+ admin: {
83
+ description: 'Track conversions and build audiences for Facebook Ads. Set up at: https://business.facebook.com/events_manager',
84
+ },
85
+ fields: [
86
+ {
87
+ name: 'enabled',
88
+ type: 'checkbox',
89
+ label: 'Enable Facebook Pixel',
90
+ defaultValue: false,
91
+ },
92
+ {
93
+ name: 'pixelId',
94
+ type: 'text',
95
+ label: 'Pixel ID',
96
+ admin: {
97
+ description: 'Format: 15-16 digit number (found in Events Manager → Data Sources)',
98
+ placeholder: '1234567890123456',
99
+ condition: (data, siblingData) => siblingData?.enabled,
100
+ },
101
+ },
102
+ ],
103
+ },
104
+ ],
105
+ },
106
+ // CAPTCHA Protection
107
+ {
108
+ type: 'collapsible',
109
+ label: 'CAPTCHA Protection',
110
+ admin: {
111
+ description: 'Protect your forms from spam and bot submissions with CAPTCHA.',
112
+ },
113
+ fields: [
114
+ {
115
+ name: 'captcha',
116
+ type: 'group',
117
+ fields: [
118
+ {
119
+ name: 'provider',
120
+ type: 'select',
121
+ label: 'CAPTCHA Provider',
122
+ defaultValue: 'none',
123
+ admin: {
124
+ description: 'Choose a CAPTCHA provider to protect forms from spam. Each has different privacy and UX tradeoffs.',
125
+ },
126
+ options: [
127
+ {
128
+ label: 'None (Disabled)',
129
+ value: 'none',
130
+ },
131
+ {
132
+ label: 'Google reCAPTCHA v2 (Checkbox)',
133
+ value: 'recaptcha-v2',
134
+ },
135
+ {
136
+ label: 'Google reCAPTCHA v3 (Invisible)',
137
+ value: 'recaptcha-v3',
138
+ },
139
+ {
140
+ label: 'hCaptcha (Privacy-focused)',
141
+ value: 'hcaptcha',
142
+ },
143
+ {
144
+ label: 'Cloudflare Turnstile (Invisible)',
145
+ value: 'turnstile',
146
+ },
147
+ ],
148
+ },
149
+ {
150
+ name: 'siteKey',
151
+ type: 'text',
152
+ label: 'Site Key (Public)',
153
+ admin: {
154
+ description: 'The public site key used in your forms. Get keys from your provider:\n• reCAPTCHA: https://www.google.com/recaptcha/admin\n• hCaptcha: https://dashboard.hcaptcha.com/signup\n• Turnstile: https://dash.cloudflare.com/?to=/:account/turnstile',
155
+ placeholder: 'Enter your site key',
156
+ condition: (data, siblingData) => siblingData?.provider && siblingData.provider !== 'none',
157
+ },
158
+ },
159
+ {
160
+ name: 'secretKey',
161
+ type: 'text',
162
+ label: 'Secret Key (Private)',
163
+ admin: {
164
+ description: '⚠️ IMPORTANT: This key is secret and used for server-side verification. Never expose this publicly. Found in the same admin panel as your site key.',
165
+ placeholder: 'Enter your secret key',
166
+ condition: (data, siblingData) => siblingData?.provider && siblingData.provider !== 'none',
167
+ },
168
+ },
169
+ {
170
+ name: 'threshold',
171
+ type: 'number',
172
+ label: 'Score Threshold (reCAPTCHA v3 only)',
173
+ defaultValue: 0.5,
174
+ min: 0,
175
+ max: 1,
176
+ admin: {
177
+ description: 'Minimum score required (0.0-1.0). Lower = more lenient, Higher = more strict. Default: 0.5',
178
+ condition: (data, siblingData) => siblingData?.provider === 'recaptcha-v3',
179
+ },
180
+ },
181
+ ],
182
+ },
183
+ ],
184
+ },
185
+ // Email Configuration
186
+ {
187
+ type: 'collapsible',
188
+ label: 'Email Configuration',
189
+ admin: {
190
+ description: 'Configure SMTP settings for sending emails from your site.',
191
+ },
192
+ fields: [
193
+ {
194
+ name: 'email',
195
+ type: 'group',
196
+ fields: [
197
+ {
198
+ name: 'provider',
199
+ type: 'select',
200
+ label: 'Email Provider',
201
+ options: [
202
+ { label: 'Console (Development)', value: 'console' },
203
+ { label: 'SMTP', value: 'smtp' },
204
+ { label: 'SendGrid', value: 'sendgrid' },
205
+ { label: 'Mailgun', value: 'mailgun' },
206
+ { label: 'Amazon SES', value: 'ses' },
207
+ ],
208
+ admin: {
209
+ description: 'Choose how emails should be sent. Use Console for development, SMTP or a service for production.',
210
+ },
211
+ },
212
+ {
213
+ name: 'smtpHost',
214
+ type: 'text',
215
+ label: 'SMTP Host',
216
+ admin: {
217
+ description: 'SMTP server hostname (e.g., smtp.gmail.com)',
218
+ condition: (data, siblingData) => siblingData?.provider === 'smtp',
219
+ },
220
+ },
221
+ {
222
+ name: 'smtpPort',
223
+ type: 'number',
224
+ label: 'SMTP Port',
225
+ defaultValue: 587,
226
+ admin: {
227
+ description: 'SMTP port (587 for TLS, 465 for SSL)',
228
+ condition: (data, siblingData) => siblingData?.provider === 'smtp',
229
+ },
230
+ },
231
+ {
232
+ name: 'smtpUser',
233
+ type: 'text',
234
+ label: 'SMTP Username',
235
+ admin: {
236
+ condition: (data, siblingData) => siblingData?.provider === 'smtp',
237
+ },
238
+ },
239
+ {
240
+ name: 'smtpPassword',
241
+ type: 'text',
242
+ label: 'SMTP Password',
243
+ admin: {
244
+ description: '⚠️ Stored securely in the database',
245
+ condition: (data, siblingData) => siblingData?.provider === 'smtp',
246
+ },
247
+ },
248
+ {
249
+ name: 'fromEmail',
250
+ type: 'email',
251
+ label: 'From Email Address',
252
+ admin: {
253
+ description: 'Email address that appears in the "From" field of sent emails',
254
+ },
255
+ },
256
+ {
257
+ name: 'fromName',
258
+ type: 'text',
259
+ label: 'From Name',
260
+ admin: {
261
+ description: 'Name that appears in the "From" field (e.g., "QwickPress Support")',
262
+ },
263
+ },
264
+ ],
265
+ },
266
+ ],
267
+ },
268
+ ],
269
+ };
270
+ //# sourceMappingURL=Integrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Integrations.js","sourceRoot":"","sources":["../../src/globals/Integrations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { GlobalConfig } from 'payload';
2
+ /**
3
+ * Site Settings - Basic site information and contact details
4
+ *
5
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
6
+ */
7
+ export declare const SiteSettings: GlobalConfig;
8
+ //# sourceMappingURL=SiteSettings.d.ts.map