@pro-laico/create-atomic-payload 0.1.4

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 (423) hide show
  1. package/bin/cli.js +159 -0
  2. package/package.json +29 -0
  3. package/template/.env.example +35 -0
  4. package/template/.gitattributes +2 -0
  5. package/template/.prettierrc.json +6 -0
  6. package/template/.vscode/extensions.json +3 -0
  7. package/template/.vscode/launch.json +24 -0
  8. package/template/.vscode/settings.json +86 -0
  9. package/template/.yarnrc +1 -0
  10. package/template/LICENSE.md +22 -0
  11. package/template/README.md +128 -0
  12. package/template/eslint.config.mjs +32 -0
  13. package/template/next-env.d.ts +6 -0
  14. package/template/next.config.ts +36 -0
  15. package/template/package.json +75 -0
  16. package/template/public/adminFavicon.svg +1 -0
  17. package/template/public/ogImage.webp +0 -0
  18. package/template/src/access/anyone.ts +3 -0
  19. package/template/src/access/authenticated.ts +7 -0
  20. package/template/src/access/authenticatedOrPublished.ts +6 -0
  21. package/template/src/app/(frontend)/[...slug]/page.tsx +48 -0
  22. package/template/src/app/(frontend)/layout.tsx +49 -0
  23. package/template/src/app/(frontend)/next/exit-preview/route.ts +7 -0
  24. package/template/src/app/(frontend)/next/preview/route.ts +45 -0
  25. package/template/src/app/(frontend)/next/seed/route.ts +31 -0
  26. package/template/src/app/(frontend)/not-found.tsx +93 -0
  27. package/template/src/app/(frontend)/page.tsx +5 -0
  28. package/template/src/app/(frontend)/sitemap.ts +14 -0
  29. package/template/src/app/(payload)/admin/[[...segments]]/not-found.tsx +24 -0
  30. package/template/src/app/(payload)/admin/[[...segments]]/page.tsx +24 -0
  31. package/template/src/app/(payload)/admin/importMap.js +85 -0
  32. package/template/src/app/(payload)/api/[...slug]/route.ts +19 -0
  33. package/template/src/app/(payload)/custom.scss +29 -0
  34. package/template/src/app/(payload)/layout.tsx +31 -0
  35. package/template/src/blocks/actions/blocks.ts +27 -0
  36. package/template/src/blocks/actions/cookieConsent/set/block.ts +17 -0
  37. package/template/src/blocks/actions/cookieConsent/set/filter.ts +3 -0
  38. package/template/src/blocks/actions/cookieConsent/set/options.ts +35 -0
  39. package/template/src/blocks/actions/cookieConsent/toDA/block.ts +14 -0
  40. package/template/src/blocks/actions/cookieConsent/toDA/filter.ts +3 -0
  41. package/template/src/blocks/actions/cookieConsent/toDA/options.ts +19 -0
  42. package/template/src/blocks/actions/dynamicStore/boolean/set/block.ts +15 -0
  43. package/template/src/blocks/actions/dynamicStore/boolean/set/filter.ts +4 -0
  44. package/template/src/blocks/actions/dynamicStore/boolean/set/options.ts +18 -0
  45. package/template/src/blocks/actions/dynamicStore/boolean/toDA/block.ts +10 -0
  46. package/template/src/blocks/actions/dynamicStore/boolean/toDA/filter.ts +3 -0
  47. package/template/src/blocks/actions/dynamicStore/boolean/toDA/options.ts +12 -0
  48. package/template/src/blocks/actions/dynamicStore/text/cycle/block.ts +41 -0
  49. package/template/src/blocks/actions/dynamicStore/text/cycle/filter.ts +4 -0
  50. package/template/src/blocks/actions/dynamicStore/text/cycle/options.ts +23 -0
  51. package/template/src/blocks/actions/dynamicStore/text/toDA/block.ts +10 -0
  52. package/template/src/blocks/actions/dynamicStore/text/toDA/filter.ts +3 -0
  53. package/template/src/blocks/actions/dynamicStore/text/toDA/options.ts +12 -0
  54. package/template/src/blocks/actions/filters.ts +27 -0
  55. package/template/src/blocks/actions/form/errorToDA/block.ts +18 -0
  56. package/template/src/blocks/actions/form/errorToDA/filter.ts +3 -0
  57. package/template/src/blocks/actions/form/errorToDA/options.ts +15 -0
  58. package/template/src/blocks/actions/form/reset/block.ts +18 -0
  59. package/template/src/blocks/actions/form/reset/filter.ts +3 -0
  60. package/template/src/blocks/actions/form/reset/options.ts +30 -0
  61. package/template/src/blocks/actions/form/statusToDA/block.ts +12 -0
  62. package/template/src/blocks/actions/form/statusToDA/filter.ts +3 -0
  63. package/template/src/blocks/actions/form/statusToDA/options.ts +15 -0
  64. package/template/src/blocks/actions/form/submit/block.ts +18 -0
  65. package/template/src/blocks/actions/form/submit/filter.ts +3 -0
  66. package/template/src/blocks/actions/form/submit/options.ts +35 -0
  67. package/template/src/blocks/actions/portal/set/block.ts +25 -0
  68. package/template/src/blocks/actions/portal/set/filter.ts +3 -0
  69. package/template/src/blocks/actions/portal/set/options.ts +43 -0
  70. package/template/src/blocks/actions/processor.ts +263 -0
  71. package/template/src/blocks/actions/theme/set/block.ts +10 -0
  72. package/template/src/blocks/actions/theme/set/filter.ts +3 -0
  73. package/template/src/blocks/actions/theme/set/options.ts +9 -0
  74. package/template/src/blocks/actions/zap.ts +4 -0
  75. package/template/src/blocks/children/atomic/block.ts +123 -0
  76. package/template/src/blocks/children/atomic/controlBar.ts +43 -0
  77. package/template/src/blocks/children/atomic/variants/button/typeField.ts +16 -0
  78. package/template/src/blocks/children/atomic/variants/button/variants/link/component.client.tsx +21 -0
  79. package/template/src/blocks/children/atomic/variants/button/variants/link/component.tsx +13 -0
  80. package/template/src/blocks/children/atomic/variants/button/variants/link/controlBar.ts +73 -0
  81. package/template/src/blocks/children/atomic/variants/button/variants/link/settings.ts +26 -0
  82. package/template/src/blocks/children/atomic/variants/button/variants/portal/controlBar.ts +35 -0
  83. package/template/src/blocks/children/atomic/variants/button/variants/portal/dialog/component.tsx +36 -0
  84. package/template/src/blocks/children/atomic/variants/button/variants/portal/dialog/settings.ts +24 -0
  85. package/template/src/blocks/children/atomic/variants/button/variants/portal/popover/component.tsx +41 -0
  86. package/template/src/blocks/children/atomic/variants/button/variants/portal/popover/settings.ts +111 -0
  87. package/template/src/blocks/children/atomic/variants/button/variants/regular/component.client.tsx +19 -0
  88. package/template/src/blocks/children/atomic/variants/button/variants/regular/component.tsx +11 -0
  89. package/template/src/blocks/children/atomic/variants/form/component.tsx +18 -0
  90. package/template/src/blocks/children/atomic/variants/form/controlBar.ts +22 -0
  91. package/template/src/blocks/children/atomic/variants/form/settings.ts +20 -0
  92. package/template/src/blocks/children/atomic/variants/input/autoCompleteOptions.ts +51 -0
  93. package/template/src/blocks/children/atomic/variants/input/controlBar.ts +13 -0
  94. package/template/src/blocks/children/atomic/variants/input/settings.ts +35 -0
  95. package/template/src/blocks/children/atomic/variants/input/typeField.ts +23 -0
  96. package/template/src/blocks/children/atomic/variants/input/variants/checkBox/component.client.tsx +12 -0
  97. package/template/src/blocks/children/atomic/variants/input/variants/checkBox/component.tsx +6 -0
  98. package/template/src/blocks/children/atomic/variants/input/variants/checkBox/settings.ts +9 -0
  99. package/template/src/blocks/children/atomic/variants/input/variants/number/component.client.tsx +12 -0
  100. package/template/src/blocks/children/atomic/variants/input/variants/number/component.tsx +6 -0
  101. package/template/src/blocks/children/atomic/variants/input/variants/number/settings.ts +9 -0
  102. package/template/src/blocks/children/atomic/variants/input/variants/radio/component.client.tsx +12 -0
  103. package/template/src/blocks/children/atomic/variants/input/variants/radio/component.tsx +6 -0
  104. package/template/src/blocks/children/atomic/variants/input/variants/radio/settings.ts +9 -0
  105. package/template/src/blocks/children/atomic/variants/input/variants/text/component.client.tsx +12 -0
  106. package/template/src/blocks/children/atomic/variants/input/variants/text/component.tsx +7 -0
  107. package/template/src/blocks/children/atomic/variants/input/variants/text/settings.ts +12 -0
  108. package/template/src/blocks/children/atomic/variants/tag/component.client.tsx +17 -0
  109. package/template/src/blocks/children/atomic/variants/tag/component.tsx +13 -0
  110. package/template/src/blocks/children/atomic/variants/tag/controlBar.ts +6 -0
  111. package/template/src/blocks/children/atomic/variants/tag/settings.ts +9 -0
  112. package/template/src/blocks/children/blocks.ts +13 -0
  113. package/template/src/blocks/children/icon/block.ts +41 -0
  114. package/template/src/blocks/children/icon/component.tsx +17 -0
  115. package/template/src/blocks/children/image/block.ts +80 -0
  116. package/template/src/blocks/children/image/component.tsx +21 -0
  117. package/template/src/blocks/children/richText/block.ts +50 -0
  118. package/template/src/blocks/children/richText/component/converters/index.tsx +10 -0
  119. package/template/src/blocks/children/richText/component/converters/internalLink.tsx +8 -0
  120. package/template/src/blocks/children/richText/component/index.tsx +10 -0
  121. package/template/src/blocks/children/richText/component.tsx +7 -0
  122. package/template/src/blocks/children/richText/defaultLexical.ts +65 -0
  123. package/template/src/blocks/children/simpleText/block.ts +41 -0
  124. package/template/src/blocks/children/simpleText/component.client.tsx +18 -0
  125. package/template/src/blocks/children/simpleText/component.tsx +11 -0
  126. package/template/src/blocks/children/svg/block.ts +39 -0
  127. package/template/src/blocks/children/svg/component.tsx +6 -0
  128. package/template/src/blocks/children/video/block.ts +70 -0
  129. package/template/src/blocks/children/video/component.tsx +11 -0
  130. package/template/src/blocks/children/zap.ts +54 -0
  131. package/template/src/blocks/submitForm/form/rateLimiting/blocks.ts +5 -0
  132. package/template/src/blocks/submitForm/form/rateLimiting/functions.ts +1 -0
  133. package/template/src/blocks/submitForm/form/rateLimiting/simpleSlidingWindow/block.ts +23 -0
  134. package/template/src/blocks/submitForm/form/rateLimiting/simpleSlidingWindow/serverFunction.ts +46 -0
  135. package/template/src/blocks/submitForm/form/sanitation/blocks.ts +6 -0
  136. package/template/src/blocks/submitForm/form/sanitation/combineTwoFields/block.ts +19 -0
  137. package/template/src/blocks/submitForm/form/sanitation/combineTwoFields/serverFunction.ts +22 -0
  138. package/template/src/blocks/submitForm/form/sanitation/functions.ts +1 -0
  139. package/template/src/blocks/submitForm/form/validation/blocks.ts +6 -0
  140. package/template/src/blocks/submitForm/form/validation/functions.ts +1 -0
  141. package/template/src/blocks/submitForm/form/validation/isUnique/block.ts +19 -0
  142. package/template/src/blocks/submitForm/form/validation/isUnique/serverFunction.ts +40 -0
  143. package/template/src/blocks/submitForm/form/zap.ts +8 -0
  144. package/template/src/blocks/submitForm/formProcessor.ts +222 -0
  145. package/template/src/blocks/submitForm/input/sanitation/blocks.ts +5 -0
  146. package/template/src/blocks/submitForm/input/sanitation/functions.ts +1 -0
  147. package/template/src/blocks/submitForm/input/sanitation/trimText/block.ts +24 -0
  148. package/template/src/blocks/submitForm/input/sanitation/trimText/serverFunction.ts +63 -0
  149. package/template/src/blocks/submitForm/input/useOn.ts +8 -0
  150. package/template/src/blocks/submitForm/input/validation/blocks.ts +6 -0
  151. package/template/src/blocks/submitForm/input/validation/contains/block.ts +12 -0
  152. package/template/src/blocks/submitForm/input/validation/contains/serverFunction.ts +23 -0
  153. package/template/src/blocks/submitForm/input/validation/doesNotContain/block.ts +12 -0
  154. package/template/src/blocks/submitForm/input/validation/doesNotContain/serverFunction.ts +23 -0
  155. package/template/src/blocks/submitForm/input/validation/functions.ts +2 -0
  156. package/template/src/blocks/submitForm/input/zap.ts +6 -0
  157. package/template/src/blocks/submitForm/serverFunction.ts +42 -0
  158. package/template/src/collections/designSets/collection.ts +44 -0
  159. package/template/src/collections/designSets/defaults.ts +20 -0
  160. package/template/src/collections/designSets/tabs/animation.ts +71 -0
  161. package/template/src/collections/designSets/tabs/colors.ts +31 -0
  162. package/template/src/collections/designSets/tabs/fonts.ts +53 -0
  163. package/template/src/collections/designSets/tabs/miscellaneous.ts +22 -0
  164. package/template/src/collections/designSets/tabs/prose.ts +151 -0
  165. package/template/src/collections/designSets/tabs/settings.ts +52 -0
  166. package/template/src/collections/designSets/tabs/sizes.ts +30 -0
  167. package/template/src/collections/designSets/tabs/storage.ts +51 -0
  168. package/template/src/collections/designSets/tabs/variables.ts +28 -0
  169. package/template/src/collections/favicons.ts +11 -0
  170. package/template/src/collections/fonts/collection.ts +20 -0
  171. package/template/src/collections/fonts/script.ts +199 -0
  172. package/template/src/collections/footers/collection.ts +48 -0
  173. package/template/src/collections/footers/component.tsx +13 -0
  174. package/template/src/collections/headers/collection.ts +47 -0
  175. package/template/src/collections/headers/component.tsx +13 -0
  176. package/template/src/collections/iconSets/collection.ts +80 -0
  177. package/template/src/collections/iconSets/defaults.ts +81 -0
  178. package/template/src/collections/icons.ts +20 -0
  179. package/template/src/collections/images.ts +29 -0
  180. package/template/src/collections/index.ts +17 -0
  181. package/template/src/collections/muxVideos.ts +13 -0
  182. package/template/src/collections/pages/collection.ts +88 -0
  183. package/template/src/collections/pages/tabs/SEO.ts +70 -0
  184. package/template/src/collections/pages/tabs/settings.ts +17 -0
  185. package/template/src/collections/posthogProperty.ts +48 -0
  186. package/template/src/collections/shortcutSets/collection.ts +30 -0
  187. package/template/src/collections/shortcutSets/defaults.ts +1 -0
  188. package/template/src/collections/shortcutSets/protectedNames.ts +135 -0
  189. package/template/src/collections/shortcutSets/tabs/settings.ts +13 -0
  190. package/template/src/collections/shortcutSets/tabs/shortcuts.ts +70 -0
  191. package/template/src/collections/users.ts +11 -0
  192. package/template/src/collections/zap.ts +59 -0
  193. package/template/src/components/child/SSRProps.ts +381 -0
  194. package/template/src/components/child/renderChildren.tsx +148 -0
  195. package/template/src/components/livePreviewListener.tsx +10 -0
  196. package/template/src/components/providers/formProvider.tsx +11 -0
  197. package/template/src/components/providers/tracking/gtm.tsx +11 -0
  198. package/template/src/components/providers/tracking/index.tsx +46 -0
  199. package/template/src/components/providers/tracking/postHog.tsx +41 -0
  200. package/template/src/components/providers/tracking/vercel.tsx +10 -0
  201. package/template/src/components/toast/index.module.css +142 -0
  202. package/template/src/components/toast/index.tsx +55 -0
  203. package/template/src/endpoints/seed/backendForm.ts +48 -0
  204. package/template/src/endpoints/seed/designSet.ts +476 -0
  205. package/template/src/endpoints/seed/footer.ts +389 -0
  206. package/template/src/endpoints/seed/header.ts +3511 -0
  207. package/template/src/endpoints/seed/iconSet.ts +19 -0
  208. package/template/src/endpoints/seed/icons/assets/check.svg +4 -0
  209. package/template/src/endpoints/seed/icons/assets/close.svg +4 -0
  210. package/template/src/endpoints/seed/icons/assets/cookie.svg +7 -0
  211. package/template/src/endpoints/seed/icons/assets/github.svg +1 -0
  212. package/template/src/endpoints/seed/icons/assets/logo.svg +11 -0
  213. package/template/src/endpoints/seed/icons/assets/menu.svg +4 -0
  214. package/template/src/endpoints/seed/icons/assets/theme.svg +4 -0
  215. package/template/src/endpoints/seed/icons/check.ts +14 -0
  216. package/template/src/endpoints/seed/icons/close.ts +14 -0
  217. package/template/src/endpoints/seed/icons/cookie.ts +14 -0
  218. package/template/src/endpoints/seed/icons/github.ts +14 -0
  219. package/template/src/endpoints/seed/icons/index.ts +7 -0
  220. package/template/src/endpoints/seed/icons/logo.ts +14 -0
  221. package/template/src/endpoints/seed/icons/menu.ts +14 -0
  222. package/template/src/endpoints/seed/icons/theme.ts +14 -0
  223. package/template/src/endpoints/seed/index.ts +100 -0
  224. package/template/src/endpoints/seed/pages/home.ts +858 -0
  225. package/template/src/endpoints/seed/pages/index.ts +4 -0
  226. package/template/src/endpoints/seed/pages/notFoundPage.ts +287 -0
  227. package/template/src/endpoints/seed/pages/prose.ts +1436 -0
  228. package/template/src/endpoints/seed/pages/testing.ts +2181 -0
  229. package/template/src/endpoints/seed/shortcutSet.ts +187 -0
  230. package/template/src/endpoints/seed/siteMetaData.ts +10 -0
  231. package/template/src/fields/actions/changeKey.ts +12 -0
  232. package/template/src/fields/actions/index.ts +6 -0
  233. package/template/src/fields/actions/initialValueCheckbox.ts +14 -0
  234. package/template/src/fields/actions/keyText.ts +10 -0
  235. package/template/src/fields/actions/persisted.ts +14 -0
  236. package/template/src/fields/actions/setData.ts +20 -0
  237. package/template/src/fields/actions/strict/index.ts +3 -0
  238. package/template/src/fields/actions/strict/keySelect.ts +28 -0
  239. package/template/src/fields/actions/strict/listenSelect.ts +28 -0
  240. package/template/src/fields/actions/strict/performSelect.ts +30 -0
  241. package/template/src/fields/actions/strict/registry/cookieConsent.ts +14 -0
  242. package/template/src/fields/actions/strict/registry/index.ts +6 -0
  243. package/template/src/fields/actions/strict/registry/theme.ts +9 -0
  244. package/template/src/fields/active.ts +16 -0
  245. package/template/src/fields/apf/index.ts +69 -0
  246. package/template/src/fields/apf/storage.ts +38 -0
  247. package/template/src/fields/blocks/actions.ts +30 -0
  248. package/template/src/fields/blocks/backdropChildren.ts +11 -0
  249. package/template/src/fields/blocks/children.ts +15 -0
  250. package/template/src/fields/blocks/submitForm/form.ts +24 -0
  251. package/template/src/fields/blocks/submitForm/input.ts +25 -0
  252. package/template/src/fields/className.ts +26 -0
  253. package/template/src/fields/coloredEnd.ts +5 -0
  254. package/template/src/fields/defaultOpen.ts +14 -0
  255. package/template/src/fields/designSets/value.ts +80 -0
  256. package/template/src/fields/devMode.ts +11 -0
  257. package/template/src/fields/favicon.ts +18 -0
  258. package/template/src/fields/for.ts +11 -0
  259. package/template/src/fields/keepMounted.ts +11 -0
  260. package/template/src/fields/modal.ts +16 -0
  261. package/template/src/fields/slug.ts +35 -0
  262. package/template/src/fields/staticDataAttributes.ts +29 -0
  263. package/template/src/fields/tabs/block/children/actions.ts +49 -0
  264. package/template/src/fields/tabs/block/children/backdrop.ts +17 -0
  265. package/template/src/fields/tabs/block/children/settings.ts +45 -0
  266. package/template/src/fields/tabs/block/children/submitForm/form.ts +23 -0
  267. package/template/src/fields/tabs/block/children/submitForm/input.ts +14 -0
  268. package/template/src/fields/tabs/block/children/tracking.ts +25 -0
  269. package/template/src/fields/tabs/collection/storage.ts +55 -0
  270. package/template/src/fields/tagType.ts +32 -0
  271. package/template/src/fields/testPath.ts +3 -0
  272. package/template/src/fields/uniqueTitle.ts +8 -0
  273. package/template/src/fields/validationMessage.ts +13 -0
  274. package/template/src/globals/index.ts +8 -0
  275. package/template/src/globals/settings.ts +36 -0
  276. package/template/src/globals/siteMetaData.ts +29 -0
  277. package/template/src/globals/storage.ts +15 -0
  278. package/template/src/globals/tracking/global.ts +25 -0
  279. package/template/src/globals/tracking/tabs/gtm.ts +18 -0
  280. package/template/src/globals/tracking/tabs/postHog.ts +35 -0
  281. package/template/src/hooks/collection/atomicHook/atomicHook.ts +223 -0
  282. package/template/src/hooks/collection/atomicHook/processors/cssProcessor.ts +60 -0
  283. package/template/src/hooks/collection/atomicHook/processors/processDesignSet/generatePreflights.ts +36 -0
  284. package/template/src/hooks/collection/atomicHook/processors/processDesignSet/index.ts +176 -0
  285. package/template/src/hooks/collection/atomicHook/processors/unsetActive.ts +24 -0
  286. package/template/src/hooks/collection/formatSVG.ts +157 -0
  287. package/template/src/hooks/collection/revalidate.ts +53 -0
  288. package/template/src/hooks/collection/sanitizeCollection.ts +5 -0
  289. package/template/src/hooks/field/apf.ts +59 -0
  290. package/template/src/hooks/field/formatSlug.ts +23 -0
  291. package/template/src/hooks/field/href.ts +6 -0
  292. package/template/src/hooks/field/publishedAt.ts +5 -0
  293. package/template/src/hooks/frontEnd/atomicStore/create.ts +69 -0
  294. package/template/src/hooks/frontEnd/atomicStore/index.tsx +20 -0
  295. package/template/src/hooks/frontEnd/atomicStore/slices/base.ts +7 -0
  296. package/template/src/hooks/frontEnd/atomicStore/slices/consent.ts +76 -0
  297. package/template/src/hooks/frontEnd/atomicStore/slices/dynamic.ts +51 -0
  298. package/template/src/hooks/frontEnd/useActions/dispatch/attributer/boolToDA/function.ts +14 -0
  299. package/template/src/hooks/frontEnd/useActions/dispatch/attributer/boolToDA/zap.ts +12 -0
  300. package/template/src/hooks/frontEnd/useActions/dispatch/attributer/cCToDA/function.ts +34 -0
  301. package/template/src/hooks/frontEnd/useActions/dispatch/attributer/cCToDA/zap.ts +17 -0
  302. package/template/src/hooks/frontEnd/useActions/dispatch/attributer/errorToDA/function.ts +22 -0
  303. package/template/src/hooks/frontEnd/useActions/dispatch/attributer/errorToDA/zap.ts +10 -0
  304. package/template/src/hooks/frontEnd/useActions/dispatch/attributer/function.ts +20 -0
  305. package/template/src/hooks/frontEnd/useActions/dispatch/attributer/statusToDA/function.ts +24 -0
  306. package/template/src/hooks/frontEnd/useActions/dispatch/attributer/statusToDA/zap.ts +10 -0
  307. package/template/src/hooks/frontEnd/useActions/dispatch/attributer/textToDA/function.ts +21 -0
  308. package/template/src/hooks/frontEnd/useActions/dispatch/attributer/textToDA/zap.ts +12 -0
  309. package/template/src/hooks/frontEnd/useActions/dispatch/attributer/zap.ts +15 -0
  310. package/template/src/hooks/frontEnd/useActions/dispatch/index.ts +2 -0
  311. package/template/src/hooks/frontEnd/useActions/dispatch/runner/cycleText/function.ts +30 -0
  312. package/template/src/hooks/frontEnd/useActions/dispatch/runner/cycleText/zap.ts +12 -0
  313. package/template/src/hooks/frontEnd/useActions/dispatch/runner/function.ts +21 -0
  314. package/template/src/hooks/frontEnd/useActions/dispatch/runner/resetForm/function.ts +7 -0
  315. package/template/src/hooks/frontEnd/useActions/dispatch/runner/resetForm/zap.ts +9 -0
  316. package/template/src/hooks/frontEnd/useActions/dispatch/runner/setBool/function.ts +10 -0
  317. package/template/src/hooks/frontEnd/useActions/dispatch/runner/setBool/zap.ts +11 -0
  318. package/template/src/hooks/frontEnd/useActions/dispatch/runner/setCCs/function.ts +33 -0
  319. package/template/src/hooks/frontEnd/useActions/dispatch/runner/setCCs/zap.ts +14 -0
  320. package/template/src/hooks/frontEnd/useActions/dispatch/runner/setThemes/function.ts +11 -0
  321. package/template/src/hooks/frontEnd/useActions/dispatch/runner/setThemes/zap.ts +10 -0
  322. package/template/src/hooks/frontEnd/useActions/dispatch/runner/submitForm/function.ts +32 -0
  323. package/template/src/hooks/frontEnd/useActions/dispatch/runner/submitForm/zap.ts +9 -0
  324. package/template/src/hooks/frontEnd/useActions/dispatch/runner/zap.ts +16 -0
  325. package/template/src/hooks/frontEnd/useActions/dispatch/zap.ts +2 -0
  326. package/template/src/hooks/frontEnd/useActions/index.ts +6 -0
  327. package/template/src/hooks/frontEnd/useActions/useActionContext.ts +21 -0
  328. package/template/src/hooks/frontEnd/useActions/useButtonActions.ts +17 -0
  329. package/template/src/hooks/frontEnd/useActions/useDaToText.ts +34 -0
  330. package/template/src/hooks/frontEnd/useActions/useForm.ts +114 -0
  331. package/template/src/hooks/frontEnd/useActions/usePortal.ts +33 -0
  332. package/template/src/hooks/frontEnd/useActions/useToDa.ts +12 -0
  333. package/template/src/hooks/global/revalidate.ts +26 -0
  334. package/template/src/payload.config.ts +78 -0
  335. package/template/src/plugins/blurDataUrls.ts +8 -0
  336. package/template/src/plugins/formBuilder.ts +40 -0
  337. package/template/src/plugins/index.ts +17 -0
  338. package/template/src/plugins/muxVideo.ts +13 -0
  339. package/template/src/plugins/nestedDocs.ts +9 -0
  340. package/template/src/plugins/vercelBlobStorage.ts +8 -0
  341. package/template/src/ts/JSONSchema.ts +93 -0
  342. package/template/src/ts/declarations.ts +24 -0
  343. package/template/src/ts/types/actions.ts +175 -0
  344. package/template/src/ts/types/apf.ts +108 -0
  345. package/template/src/ts/types/cache.ts +166 -0
  346. package/template/src/ts/types/css.ts +14 -0
  347. package/template/src/ts/types/forms.ts +214 -0
  348. package/template/src/ts/types/frontEnd.ts +115 -0
  349. package/template/src/ts/types/index.ts +49 -0
  350. package/template/src/ts/types/payload-types.ts +3684 -0
  351. package/template/src/ts/zap/ap.ts +82 -0
  352. package/template/src/ts/zap/index.ts +4 -0
  353. package/template/src/ui/apf/controls.tsx +88 -0
  354. package/template/src/ui/apf/field.tsx +81 -0
  355. package/template/src/ui/apf/index.scss +59 -0
  356. package/template/src/ui/apf/label.tsx +23 -0
  357. package/template/src/ui/assets/Icon.tsx +21 -0
  358. package/template/src/ui/assets/Logo.tsx +21 -0
  359. package/template/src/ui/assets/atomicIcon.tsx +27 -0
  360. package/template/src/ui/assets/warningIcon.ts +6 -0
  361. package/template/src/ui/blocks/actionBlock.tsx +44 -0
  362. package/template/src/ui/blocks/inputBlock.tsx +24 -0
  363. package/template/src/ui/decorative/coloredEnd.tsx +16 -0
  364. package/template/src/ui/decorative/index.scss +46 -0
  365. package/template/src/ui/fields/iconSelect/index.tsx +19 -0
  366. package/template/src/ui/fields/slug/index.scss +12 -0
  367. package/template/src/ui/fields/slug/index.tsx +72 -0
  368. package/template/src/ui/index.ts +32 -0
  369. package/template/src/ui/root/beforeDashboard/index.scss +22 -0
  370. package/template/src/ui/root/beforeDashboard/index.tsx +39 -0
  371. package/template/src/ui/root/beforeDashboard/seedButton/index.scss +12 -0
  372. package/template/src/ui/root/beforeDashboard/seedButton/index.tsx +84 -0
  373. package/template/src/ui/root/siteTriggers/index.scss +22 -0
  374. package/template/src/ui/root/siteTriggers/index.tsx +94 -0
  375. package/template/src/ui/root/siteTriggers/triggerVercelDeploy.ts +37 -0
  376. package/template/src/ui/rowLabels/animation.tsx +27 -0
  377. package/template/src/ui/rowLabels/atomic/index.scss +62 -0
  378. package/template/src/ui/rowLabels/atomic/index.tsx +96 -0
  379. package/template/src/ui/rowLabels/color.tsx +33 -0
  380. package/template/src/ui/rowLabels/designToken.tsx +30 -0
  381. package/template/src/ui/rowLabels/icon.tsx +32 -0
  382. package/template/src/ui/rowLabels/shortcut/index.scss +21 -0
  383. package/template/src/ui/rowLabels/shortcut/index.tsx +30 -0
  384. package/template/src/ui/rowLabels/simpleText.tsx +41 -0
  385. package/template/src/utilities/deepMerge.ts +30 -0
  386. package/template/src/utilities/extractSVG.ts +9 -0
  387. package/template/src/utilities/format/toKebabCase.ts +79 -0
  388. package/template/src/utilities/format/toTitleCase.ts +47 -0
  389. package/template/src/utilities/formatDurationWithTokens.ts +56 -0
  390. package/template/src/utilities/generateMetaData.ts +45 -0
  391. package/template/src/utilities/generatePreviewPath.ts +43 -0
  392. package/template/src/utilities/get/cache/getAtomicActions.ts +48 -0
  393. package/template/src/utilities/get/cache/getAtomicClasses.ts +20 -0
  394. package/template/src/utilities/get/cache/getDesignSet.ts +15 -0
  395. package/template/src/utilities/get/cache/getFooter.ts +17 -0
  396. package/template/src/utilities/get/cache/getFormSubmissions.ts +17 -0
  397. package/template/src/utilities/get/cache/getForms.ts +43 -0
  398. package/template/src/utilities/get/cache/getHeader.ts +17 -0
  399. package/template/src/utilities/get/cache/getIcon.ts +51 -0
  400. package/template/src/utilities/get/cache/getImage.ts +20 -0
  401. package/template/src/utilities/get/cache/getPage.ts +35 -0
  402. package/template/src/utilities/get/cache/getPages.ts +24 -0
  403. package/template/src/utilities/get/cache/getShortcutSet.ts +17 -0
  404. package/template/src/utilities/get/cache/getSiteCSS.ts +17 -0
  405. package/template/src/utilities/get/cache/getSiteMetadata.ts +14 -0
  406. package/template/src/utilities/get/cache/getSitemap.ts +50 -0
  407. package/template/src/utilities/get/cache/getTracking.ts +14 -0
  408. package/template/src/utilities/get/cache/index.ts +129 -0
  409. package/template/src/utilities/get/cache/react.ts +5 -0
  410. package/template/src/utilities/get/getImageURL.ts +20 -0
  411. package/template/src/utilities/get/getMeUser.ts +22 -0
  412. package/template/src/utilities/get/getURL.ts +20 -0
  413. package/template/src/utilities/log/cache.ts +8 -0
  414. package/template/src/utilities/log/manual.ts +11 -0
  415. package/template/src/utilities/log/revalidation.ts +6 -0
  416. package/template/src/utilities/mergeTags.ts +7 -0
  417. package/template/src/utilities/propertyApplicatorUtility.ts +20 -0
  418. package/template/src/utilities/revalidateTag.ts +55 -0
  419. package/template/src/utilities/runAPF.ts +10 -0
  420. package/template/src/utilities/sanitizeData.ts +24 -0
  421. package/template/src/utilities/seedNestedRelationship.ts +5 -0
  422. package/template/tailwind.config.js +9 -0
  423. package/template/tsconfig.json +49 -0
@@ -0,0 +1,166 @@
1
+ import {
2
+ Form,
3
+ Page,
4
+ Footer,
5
+ Header,
6
+ Tracking,
7
+ DesignSet,
8
+ ImageChild,
9
+ ShortcutSet,
10
+ SiteMetaDatum,
11
+ FormSubmission,
12
+ StoredAtomicForm,
13
+ AtomicStoreInitialState,
14
+ ModifiedStoredAtomicForm,
15
+ } from '@/ts/types'
16
+
17
+ // /////////////////////////////////////
18
+ // Helper Types
19
+ // /////////////////////////////////////
20
+
21
+ /** Merges two tuple types by appending the second tuple to the firs t*/
22
+ export type MergeTuples<T extends readonly unknown[], U extends readonly unknown[]> = [...T, ...U]
23
+
24
+ // /////////////////////////////////////
25
+ // General Types
26
+ // /////////////////////////////////////
27
+
28
+ /** Array elements data returned by the getCached<'sitemap'> function. */
29
+ export type SiteMapEntry = {
30
+ url: string
31
+ priority: number
32
+ lastModified: string
33
+ changeFrequency: 'yearly' | 'monthly' | 'weekly' | 'daily' | 'hourly' | 'never'
34
+ }
35
+
36
+ /** Data returned by the revalidateTag function. */
37
+ export type RevalidateTagResponse = { success: boolean; message: string; timestamp: string }
38
+
39
+ // /////////////////////////////////////
40
+ // Tags
41
+ // /////////////////////////////////////
42
+
43
+ // When adding a new tag, also add the corresponding overload at /utilities/get/cache/index.ts
44
+ type PageTags = 'page'
45
+ type CacheTags = 'draft' | 'published'
46
+ type GlobalsTags = 'tracking' | 'settings'
47
+ type CSSTags = 'site-css' | 'atomic-classes'
48
+ type IconTags = 'iconSet' | 'icon' | 'icon-options'
49
+ type CollectionsTags = 'designSet' | 'footer' | 'header' | 'shortcutSet'
50
+ type FrontEndTags = 'sitemap' | 'pages' | 'site-metadata' | 'atomic-actions'
51
+ type FormsTags = 'atomic-forms' | 'all-forms' | 'form-submissions' | 'backend-forms' | 'image'
52
+
53
+ // Tags that for the revalidateTag function, has a promise return type.
54
+ export type PromiseTagGroup = 'draft' | 'published'
55
+ // Tags that have no corresponding getCached function.
56
+ export type TagsWithNoGetters = 'draft' | 'published' | 'settings'
57
+ // Adds a id key to the tag.
58
+ export type IDTagGroup = 'page' | 'icon' | 'form-submissions' | 'image'
59
+ // Tags that dont handle for draft or published.
60
+ export type NoDraftTagGroup = 'backend-forms' | 'form-submissions' | 'draft' | 'published' | 'image'
61
+
62
+ export type AllTags = CSSTags | GlobalsTags | IconTags | FrontEndTags | PageTags | FormsTags | CollectionsTags | CacheTags
63
+ export type AllTagsWithGetters = Exclude<AllTags, TagsWithNoGetters>
64
+
65
+ type Tag<T extends AllTags> = T extends NoDraftTagGroup
66
+ ? T extends IDTagGroup
67
+ ? [T, tid: string]
68
+ : [T]
69
+ : T extends IDTagGroup
70
+ ? [T, tid: string, draft: boolean]
71
+ : [T, draft: boolean]
72
+
73
+ // /////////////////////////////////////
74
+ // Revalidate Tag Function Types
75
+ // /////////////////////////////////////
76
+
77
+ export type RevalidateTagType =
78
+ | { args: Tag<'page'>; return: void }
79
+ | { args: Tag<'icon'>; return: void }
80
+ | { args: Tag<'image'>; return: void }
81
+ | { args: Tag<'pages'>; return: void }
82
+ | { args: Tag<'header'>; return: void }
83
+ | { args: Tag<'footer'>; return: void }
84
+ | { args: Tag<'sitemap'>; return: void }
85
+ | { args: Tag<'iconSet'>; return: void }
86
+ | { args: Tag<'site-css'>; return: void }
87
+ | { args: Tag<'tracking'>; return: void }
88
+ | { args: Tag<'settings'>; return: void }
89
+ | { args: Tag<'all-forms'>; return: void }
90
+ | { args: Tag<'designSet'>; return: void }
91
+ | { args: Tag<'shortcutSet'>; return: void }
92
+ | { args: Tag<'icon-options'>; return: void }
93
+ | { args: Tag<'atomic-forms'>; return: void }
94
+ | { args: Tag<'backend-forms'>; return: void }
95
+ | { args: Tag<'site-metadata'>; return: void }
96
+ | { args: Tag<'atomic-classes'>; return: void }
97
+ | { args: Tag<'atomic-actions'>; return: void }
98
+ | { args: Tag<'form-submissions'>; return: void }
99
+ | { args: Tag<'draft'>; return: RevalidateTagResponse }
100
+ | { args: Tag<'published'>; return: RevalidateTagResponse }
101
+
102
+ /** The pass through arguments for the revalidate tag function. Set to 'all' to get the parameters for all tags. Mainly just for function overload. */
103
+ export type RArgs<T extends AllTags | 'all'> = T extends AllTags ? Extract<RevalidateTagType, { args: Tag<T> }>['args'] : RevalidateTagType['args']
104
+
105
+ /** The return type of the revalidate tag function. Set to 'all' to get the return type for all tags. Mainly just for function overload. */
106
+ export type RReturns<T extends AllTags | 'all'> = Promise<
107
+ T extends AllTags ? Extract<RevalidateTagType, { args: Tag<T> }>['return'] : RevalidateTagType['return']
108
+ >
109
+
110
+ // /////////////////////////////////////
111
+ // Get Cache Function Types
112
+ // /////////////////////////////////////
113
+ /** Data returned by the getCached<'iconSet'> function. */
114
+ export type IconSetReturn = { iconsArray: { name: string; icon: string }[] }
115
+ /** Data returned by the getCached<'page'> function. */
116
+ export type PageReturn = Pick<Page, 'children' | 'mainClassName' | 'meta' | 'id'>
117
+ export type StoredAtomicActionsReturn = AtomicStoreInitialState
118
+
119
+ type PageArgs = [pages: string[]] // Used on tag 'page'
120
+ type ImageArgs = [version?: ImageChild['version']] // Used on tag 'image'
121
+ type IconArgs = [iconSet: IconSetReturn] // Used on tags 'icon' and 'icon-options'
122
+ type AllFormsArgs = [atomicForms: StoredAtomicForm[], backendForms: Form[]] // Used on tag 'all-forms'
123
+
124
+ export type GetCached =
125
+ | { args: Tag<'header'>; return: Header }
126
+ | { args: Tag<'footer'>; return: Footer }
127
+ | { args: Tag<'pages'>; return: string[] }
128
+ | { args: Tag<'site-css'>; return: string }
129
+ | { args: Tag<'designSet'>; return: DesignSet }
130
+ | { args: Tag<'backend-forms'>; return: Form[] }
131
+ | { args: Tag<'iconSet'>; return: IconSetReturn }
132
+ | { args: Tag<'sitemap'>; return: SiteMapEntry[] }
133
+ | { args: Tag<'shortcutSet'>; return: ShortcutSet }
134
+ | { args: Tag<'atomic-classes'>; return: string[] }
135
+ | { args: Tag<'tracking'>; return: Tracking | undefined }
136
+ | { args: Tag<'form-submissions'>; return: FormSubmission[] }
137
+ | { args: Tag<'atomic-actions'>; return: AtomicStoreInitialState }
138
+ | { args: Tag<'site-metadata'>; return: SiteMetaDatum | undefined }
139
+ | { args: Tag<'atomic-forms'>; return: StoredAtomicForm[] | undefined }
140
+ | { args: MergeTuples<Tag<'icon'>, IconArgs>; return: string | undefined }
141
+ | { args: MergeTuples<Tag<'image'>, ImageArgs>; return: string | undefined }
142
+ | { args: MergeTuples<Tag<'page'>, PageArgs>; return: PageReturn | undefined }
143
+ | { args: MergeTuples<Tag<'icon-options'>, IconArgs>; return: { label: string; value: string }[] }
144
+ | { args: MergeTuples<Tag<'all-forms'>, AllFormsArgs>; return: ModifiedStoredAtomicForm[] | undefined }
145
+
146
+ /** The pass through arguments for the get cache function. Set to 'all' to get the parameters for all tags. Mainly just for function overload. */
147
+ export type GCArgs<T extends AllTagsWithGetters | 'all'> = T extends AllTagsWithGetters
148
+ ? Extract<GetCached, { args: [T, ...any[]] }>['args']
149
+ : GetCached['args']
150
+
151
+ /** The return type of the get cached functions. Set to 'all' to get the return type for all tags. Mainly just for function overload. */
152
+ export type GCReturns<T extends AllTagsWithGetters | 'all'> = T extends AllTagsWithGetters
153
+ ? Promise<Extract<GetCached, { args: [T, ...any[]] }>['return']>
154
+ : Promise<GetCached['return']>
155
+
156
+ /** Function type for get cached functions. Used directly on variable definition getters. */
157
+ export type GCFunction<T extends AllTagsWithGetters> = (
158
+ ...args: Extract<GetCached, { args: [T, ...any[]] }>['args']
159
+ ) => Promise<Extract<GetCached, { args: [T, ...any[]] }>['return']>
160
+
161
+ // /////////////////////////////////////
162
+ // Miscellaneous Types
163
+ // /////////////////////////////////////
164
+
165
+ export type RevalidationLoggerType = string[]
166
+ export type CacheLoggerType<T extends AllTagsWithGetters> = (args: RArgs<T>) => void
@@ -0,0 +1,14 @@
1
+ import type { RequestContext, PayloadRequest } from 'payload'
2
+ import type { Config, CollectionThatUsesCSSProcessorSlug, CollectionWithStoredAtomicClassesSlug } from '@/ts/types'
3
+
4
+ /** Document types from collections that include storedAtomicClasses property. E.g., Page | Footer | Header */
5
+ export type CollectionsWithStoredAtomicClasses = Config['collections'][CollectionWithStoredAtomicClassesSlug]
6
+
7
+ export type CollectionThatUsesCSSProcessor = Config['collections'][CollectionThatUsesCSSProcessorSlug]
8
+
9
+ export type cssProcessorType = (args: {
10
+ draft: boolean
11
+ req: PayloadRequest
12
+ context: RequestContext
13
+ slug: CollectionThatUsesCSSProcessorSlug
14
+ }) => Promise<string>
@@ -0,0 +1,214 @@
1
+ import type { BlocksFieldClientProps } from 'payload'
2
+ import type {
3
+ Config,
4
+ FormSubmission,
5
+ StoredAtomicForm,
6
+ AtomicInputTypes,
7
+ CookiePreferences,
8
+ FormRateLimitBlocks,
9
+ FormSanitationBlocks,
10
+ FormValidationBlocks,
11
+ InputSanitationBlocks,
12
+ InputValidationBlocks,
13
+ FormRateLimitBlockType,
14
+ FormSanitationBlockType,
15
+ FormValidationBlockType,
16
+ InputValidationBlockType,
17
+ InputSanitationBlockType,
18
+ } from '@/ts/types'
19
+
20
+ // /////////////////////////////////////
21
+ // Collection Types
22
+ // /////////////////////////////////////
23
+
24
+ /** Collection slugs where the document type includes storedAtomicForms property. E.g., 'pages' | 'footer' | 'header' */
25
+ export type CollectionsWithStoredFormsSlugs = {
26
+ [K in keyof Config['collections']]: Config['collections'][K] extends { storedAtomicForms?: unknown } ? K : never
27
+ }[keyof Config['collections']]
28
+
29
+ /** Document types from collections that include storedAtomicForms property. E.g., Page | Footer | Header */
30
+ export type CollectionsWithStoredForms = Config['collections'][CollectionsWithStoredFormsSlugs]
31
+
32
+ // /////////////////////////////////////
33
+ // INPUT CLIENT COMPONENT TYPES
34
+ // /////////////////////////////////////
35
+
36
+ export type UsedOn = { block: string; usedOn: AtomicInputTypes }[]
37
+ export interface InputBlocksFieldProps extends BlocksFieldClientProps {
38
+ usedOn: { block: string; usedOn: AtomicInputTypes }[]
39
+ }
40
+
41
+ // /////////////////////////////////////
42
+ // UTILITY FUNCTION TYPES
43
+ // /////////////////////////////////////
44
+
45
+ export type FilterSubmissionsByFieldAndValue = (args: {
46
+ fieldName: string
47
+ submissions: FormSubmission[]
48
+ fieldValue: FormDataEntryValue | null
49
+ }) => FormSubmission[]
50
+
51
+ // /////////////////////////////////////
52
+ // DATA TYPES
53
+ // /////////////////////////////////////
54
+
55
+ /** Data that is collected from the client and passed in. */
56
+ type ClientUserData = {
57
+ timezone: string
58
+ preferences: CookiePreferences
59
+ }
60
+
61
+ /** Data that is collected from the server via headers. */
62
+ type ServerUserData = {
63
+ userAgent: string
64
+ }
65
+
66
+ type ClientAnalyticsData = {
67
+ screenWidth: string
68
+ screenHeight: string
69
+ }
70
+
71
+ /** Data that is collected from the server via headers. */
72
+ type ServerAnalyticsData = {
73
+ referer: string
74
+ }
75
+
76
+ export type UserData = ClientUserData & ServerUserData
77
+ export type AnalyticsData = ClientAnalyticsData & ServerAnalyticsData
78
+
79
+ /* Server Functions Response To Client */
80
+ export type FormResponse = {
81
+ /** Whether or not the form submission was/is successful. */
82
+ success: boolean
83
+ /** Input Error Messages. Used for displaying error messages for specific form fields. */
84
+ im: Record<string, string>
85
+ /** Form Message. Used for form error or success messages. */
86
+ fm: string
87
+ /** Submission ID. Used for tracking seperate submissions. */
88
+ submissionID: string
89
+ /** Only contains the actual data submitted by form fields. */
90
+ formData: FormData
91
+ }
92
+
93
+ export type SubmitToPayload = { field: string; value: string }[]
94
+
95
+ // /////////////////////////////////////
96
+ // FORM PROCESSOR TYPES
97
+ // /////////////////////////////////////
98
+
99
+ // /////////////////////////////////////
100
+ // Generally Used Types
101
+
102
+ export type AllFormBlockTypes =
103
+ | FormRateLimitBlockType
104
+ | FormSanitationBlockType
105
+ | FormValidationBlockType
106
+ | InputSanitationBlockType
107
+ | InputValidationBlockType
108
+
109
+ export type AllFormBlocks =
110
+ | FormRateLimitBlocks[number]
111
+ | FormSanitationBlocks[number]
112
+ | FormValidationBlocks[number]
113
+ | (InputSanitationBlocks[number] & { inputName: string })
114
+ | (InputValidationBlocks[number] & { inputName: string })
115
+
116
+ /** Contains general context for use in form processor functions. */
117
+ export type FormContext = {
118
+ ip: string
119
+ /** The headers of the request. Grabbed By Next.js headers(). */
120
+ headers: Headers
121
+ /** The page the submission was made from. */
122
+ referer: string
123
+ /** The ID of the backend form. Used for submission. */
124
+ backendFormID: string
125
+ /** Data passed in from the client. */
126
+ clientData: ClientUserData & ClientAnalyticsData
127
+ /** Set by rate limiting functions, as the time to wait until the next request can be made.
128
+ * Set in milliseconds.
129
+ */
130
+ waitFor?: number
131
+ }
132
+
133
+ export type ModifiedStoredAtomicForm = {
134
+ /** The ID of the backend form. Used for submitting formData to payload. */
135
+ backendFormID: string
136
+ } & StoredAtomicForm
137
+
138
+ // /////////////////////////////////////
139
+ // Input Parameters For Methods & Functions
140
+
141
+ /** Input Parameters For Submit Form Function */
142
+ export interface SubmitFormProps {
143
+ formData: FormData
144
+ submissionID: string
145
+ blockID: string | null | undefined
146
+ clientData: ClientUserData & ClientAnalyticsData
147
+ }
148
+
149
+ /** Base Parameters For All Functions Used In Form Processor */
150
+ export interface AFPBase {
151
+ formData: FormData
152
+ context: FormContext
153
+ response: FormResponse
154
+ storedForm: ModifiedStoredAtomicForm
155
+ }
156
+
157
+ /** Base Parameters For Form Processors public process() and private preProcess(). */
158
+ export type ProcessMethodArgs = {
159
+ headers: Headers
160
+ storedForm: ModifiedStoredAtomicForm
161
+ submissionData: SubmitFormProps
162
+ }
163
+
164
+ type MessageProcessorArgs = {
165
+ /** Validation Message. */
166
+ vm: string
167
+ /** Time in milliseconds to wait until the next request can be made. */
168
+ waitFor?: number
169
+ formData: FormData
170
+ }
171
+
172
+ type RunBlocksArgs = {
173
+ type: AllFormBlockTypes
174
+ block: AllFormBlocks
175
+ persevere?: true
176
+ }
177
+
178
+ // /////////////////////////////////////
179
+ // Return Value Types
180
+
181
+ /** Return Value for Form Processor */
182
+ export type FormProcessorReturn = {
183
+ response: FormResponse
184
+ submitToPayload: SubmitToPayload
185
+ }
186
+
187
+ // /////////////////////////////////////
188
+ // Function Types
189
+
190
+ export type SubmitFormFunction = (args: SubmitFormProps) => Promise<FormResponse>
191
+
192
+ // /////////////////////////////////////
193
+ // Method Types
194
+
195
+ /** Private Method that modifies the incoming data for use in functions. */
196
+ export type PreProcessMethod = (args: ProcessMethodArgs) => void
197
+
198
+ /** Public Method that actually processes the form.*/
199
+ export type ProcessMethod = (args: ProcessMethodArgs) => Promise<FormProcessorReturn>
200
+
201
+ /** Private Method that modifies the outgoing data for use in storage. */
202
+ export type PostProcessMethod = () => FormProcessorReturn
203
+
204
+ /** Private Method that modifies the response messages. */
205
+ export type MessageProcessorMethod = (args: MessageProcessorArgs) => string
206
+
207
+ /** Private Method that finds and runs a blocks corresponding function.*/
208
+ export type RunBlocksMethod = (args: RunBlocksArgs) => Promise<void>
209
+
210
+ // /////////////////////////////////////
211
+ // Block Function Types
212
+
213
+ export type FormFunction<TArgs extends { block: AllFormBlocks } = { block: AllFormBlocks }> = (args: AFPBase & TArgs) => Promise<AFPBase>
214
+ export type FormFunctionsMap = { [K in AllFormBlocks as K['blockType']]: FormFunction<{ block: K }> }
@@ -0,0 +1,115 @@
1
+ // Front End Types
2
+ import type { ReactNode } from 'react'
3
+ import type { ChildBlocks } from '@/ts/types'
4
+
5
+ // /////////////////////////////////////
6
+ // UTILITY FUNCTION TYPES
7
+ // /////////////////////////////////////
8
+
9
+ export type Apply = Record<string, unknown>
10
+
11
+ export interface AtomicChildReturn {
12
+ /** Props That Can Be Applied To Trigger */
13
+ tp: Apply
14
+ /** Props That Can Be Applied To Backdrop */
15
+ bp: Apply
16
+ }
17
+
18
+ export type PassThrough = {
19
+ /** Props that should be spread on target element */
20
+ p?: Record<string, unknown>
21
+ /** Children */
22
+ children?: ReactNode
23
+ /** Data Attributes that should be spread on target element*/
24
+ da?: Record<string, string>
25
+ }
26
+
27
+ export type PassThroughs = {
28
+ /** Content Pass Throughs */
29
+ c: PassThrough
30
+ /** Trigger Pass Throughs */
31
+ t: PassThrough
32
+ /** Portal Pass Throughs */
33
+ po: {
34
+ /** Backdrop Pass Throughs */
35
+ b: Omit<PassThrough, 'da'>
36
+ /** Dialog Pass Throughs */
37
+ di: Omit<PassThrough, 'children' | 'da'>
38
+ /** Popover Pass Throughs */
39
+ pop: Omit<PassThrough, 'children' | 'da'>
40
+ }
41
+ }
42
+
43
+ // /////////////////////////////////////
44
+ // CHILD TYPES
45
+ // /////////////////////////////////////
46
+
47
+ /** Used for base ui custom components. */
48
+ export interface RenderChild<T extends ChildBlocks[number] | ChildBlocks> {
49
+ /** The block being rendered */
50
+ block: T
51
+ /** All Possible Pass Throughs. Includes spreadable props, children components, and data attributes. */
52
+ pt: PassThroughs
53
+ contentChildren?: ReactNode
54
+ triggerChildren?: ReactNode
55
+ backdropChildren?: ReactNode
56
+ }
57
+
58
+ /** {@link RenderChildrenProps} */
59
+ export type RenderChildrenProps = React.FC<{
60
+ blocks?: ChildBlocks | null
61
+ }>
62
+
63
+ // /////////////////////////////////////
64
+ // ATOMIC STORE TYPES
65
+ // /////////////////////////////////////
66
+
67
+ type PersistedProp = boolean | null | undefined
68
+ export type ImplementedStorageTypes = boolean | string | Record<string, string>
69
+
70
+ export type AtomicStoreInitialState = {
71
+ version: number
72
+ //storedAtomicActions: StoredAtomicActions
73
+ }
74
+
75
+ export interface AtomicStoreProviderProps {
76
+ children: ReactNode
77
+ initialState: AtomicStoreInitialState
78
+ }
79
+
80
+ export type BaseSlice = {
81
+ hydrated: boolean
82
+ setHydrated: (hydrated: boolean) => void
83
+ }
84
+
85
+ export interface DynamicSlice {
86
+ memory: Record<string, ImplementedStorageTypes>
87
+ persisted: Record<string, ImplementedStorageTypes>
88
+ removeValue: (key: string, persisted: PersistedProp) => void
89
+ getValue: (key: string, persisted: PersistedProp) => ImplementedStorageTypes
90
+ setValue: (key: string, value: ImplementedStorageTypes, persisted: PersistedProp) => void
91
+ //clearStorage: (persisted: PersistedProp) => void
92
+ //setMultiple: (entries: Array<{ key: string; value: ImplementedStorageTypes; persisted: PersistedProp }>) => void
93
+ //getMultiple: (keys: Array<{ key: string; persisted: PersistedProp }>) => Record<string, ImplementedStorageTypes>
94
+ }
95
+
96
+ export interface ConsentPreferences {
97
+ functional: boolean
98
+ security: boolean
99
+ analytics: boolean
100
+ marketing: boolean
101
+ userData: boolean
102
+ adPersonalization: boolean
103
+ contentPersonalization: boolean
104
+ }
105
+
106
+ export interface ConsentSlice {
107
+ hasConsented: boolean | null
108
+ preferences: ConsentPreferences
109
+ previouslyConsented: boolean | null
110
+ declineCookies: () => void
111
+ acceptCookies: (preferences?: Partial<ConsentPreferences>) => void
112
+ setPreference: (category: keyof ConsentPreferences, value: boolean) => void
113
+ }
114
+
115
+ export type AtomicStore = BaseSlice & ConsentSlice & DynamicSlice
@@ -0,0 +1,49 @@
1
+ import type { Config, ChildBlockType, ActionBlockType } from '@/ts/types'
2
+ import type { BlockSlug, CollectionSlug } from 'payload'
3
+ export * from './apf'
4
+ export * from './css'
5
+ export * from './cache'
6
+ export * from './forms'
7
+ export * from './actions'
8
+ export * from './frontEnd'
9
+ export * from './payload-types'
10
+
11
+ // /////////////////////////////////////
12
+ // Miscellaneous Types
13
+ // /////////////////////////////////////
14
+
15
+ export type StringKeyOf<T> = Extract<keyof T, string>
16
+
17
+ /** The type used by the atomic child block's for depth management */
18
+ export type DepthControls = {
19
+ /** Current content blocks depth. */
20
+ cd: number
21
+ /** The maximum content blocks depth. */
22
+ cmd: number
23
+ /** The current trigger blocks depth. */
24
+ td: number
25
+ /** The maximum trigger blocks depth. */
26
+ tmd: number
27
+ }
28
+
29
+ export type DotNestedKeys<T> = T extends object
30
+ ? {
31
+ [K in keyof T & (string | number)]: T[K] extends object ? `${K}` | `${K}.${DotNestedKeys<T[K]>}` : `${K}`
32
+ }[keyof T & (string | number)]
33
+ : never
34
+
35
+ export type Last<T extends any[]> = T extends [...infer _, infer L] ? L : never
36
+
37
+ // /////////////////////////////////////
38
+ // Payload Types
39
+ // /////////////////////////////////////
40
+ export type AllBlocks = Config['blocks'][keyof Config['blocks']]
41
+ export type AllCollections = Config['collections'][keyof Config['collections']]
42
+
43
+ export type CollectionBySlug<T extends CollectionSlug> = Config['collections'][T]
44
+
45
+ export type BlockBySlug<T extends BlockSlug> = Config['blocks'][T]
46
+ export type ChildBySlug<T extends ChildBlockType> = BlockBySlug<T>
47
+ export type ActionBySlug<T extends ActionBlockType> = BlockBySlug<T>
48
+
49
+ export type AllBlockDotNestedKeys = DotNestedKeys<AllBlocks>