@btst/stack 2.4.0 → 2.5.1

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 (225) hide show
  1. package/dist/node_modules/.pnpm/{@tiptap_core@3.15.3_@tiptap_pm@3.15.3 → @tiptap_core@3.20.0_@tiptap_pm@3.15.3}/node_modules/@tiptap/core/dist/index.cjs +68 -8
  2. package/dist/node_modules/.pnpm/{@tiptap_core@3.15.3_@tiptap_pm@3.15.3 → @tiptap_core@3.20.0_@tiptap_pm@3.15.3}/node_modules/@tiptap/core/dist/index.mjs +68 -8
  3. package/dist/node_modules/.pnpm/{@tiptap_extension-blockquote@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-blockquote@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-blockquote/dist/index.cjs +2 -2
  4. package/dist/node_modules/.pnpm/{@tiptap_extension-blockquote@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-blockquote@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-blockquote/dist/index.mjs +2 -2
  5. package/dist/node_modules/.pnpm/{@tiptap_extension-bold@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-bold@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-bold/dist/index.cjs +2 -2
  6. package/dist/node_modules/.pnpm/{@tiptap_extension-bold@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-bold@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-bold/dist/index.mjs +2 -2
  7. package/dist/node_modules/.pnpm/{@tiptap_extension-bubble-menu@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-bubble-menu@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-bubble-menu/dist/index.cjs +1 -1
  8. package/dist/node_modules/.pnpm/{@tiptap_extension-bubble-menu@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-bubble-menu@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-bubble-menu/dist/index.mjs +1 -1
  9. package/dist/node_modules/.pnpm/{@tiptap_extension-code-block-lowlight@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@ti_2245ac34d84b5693aa60775b0f7781e3 → @tiptap_extension-code-block-lowlight@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@ti_360e739196c451ebf408f4af5a9f3f24}/node_modules/@tiptap/extension-code-block-lowlight/dist/index.cjs +2 -2
  10. package/dist/node_modules/.pnpm/{@tiptap_extension-code-block-lowlight@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@ti_2245ac34d84b5693aa60775b0f7781e3 → @tiptap_extension-code-block-lowlight@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@ti_360e739196c451ebf408f4af5a9f3f24}/node_modules/@tiptap/extension-code-block-lowlight/dist/index.mjs +2 -2
  11. package/dist/node_modules/.pnpm/@tiptap_extension-code-block@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3/node_modules/@tiptap/extension-code-block/dist/index.cjs +319 -0
  12. package/dist/node_modules/.pnpm/@tiptap_extension-code-block@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3/node_modules/@tiptap/extension-code-block/dist/index.mjs +315 -0
  13. package/dist/node_modules/.pnpm/{@tiptap_extension-code-block@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-code-block@3.20.0_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-code-block/dist/index.cjs +1 -1
  14. package/dist/node_modules/.pnpm/{@tiptap_extension-code-block@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-code-block@3.20.0_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-code-block/dist/index.mjs +1 -1
  15. package/dist/node_modules/.pnpm/{@tiptap_extension-code@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-code@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-code/dist/index.cjs +1 -1
  16. package/dist/node_modules/.pnpm/{@tiptap_extension-code@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-code@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-code/dist/index.mjs +1 -1
  17. package/dist/node_modules/.pnpm/{@tiptap_extension-document@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-document@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-document/dist/index.cjs +1 -1
  18. package/dist/node_modules/.pnpm/{@tiptap_extension-document@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-document@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-document/dist/index.mjs +1 -1
  19. package/dist/node_modules/.pnpm/{@tiptap_extension-floating-menu@3.15.3_@floating-ui_dom@1.7.4_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-floating-menu@3.15.3_@floating-ui_dom@1.7.4_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-floating-menu/dist/index.cjs +1 -1
  20. package/dist/node_modules/.pnpm/{@tiptap_extension-floating-menu@3.15.3_@floating-ui_dom@1.7.4_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-floating-menu@3.15.3_@floating-ui_dom@1.7.4_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-floating-menu/dist/index.mjs +1 -1
  21. package/dist/node_modules/.pnpm/{@tiptap_extension-hard-break@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-hard-break@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-hard-break/dist/index.cjs +1 -1
  22. package/dist/node_modules/.pnpm/{@tiptap_extension-hard-break@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-hard-break@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-hard-break/dist/index.mjs +1 -1
  23. package/dist/node_modules/.pnpm/{@tiptap_extension-heading@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-heading@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-heading/dist/index.cjs +1 -1
  24. package/dist/node_modules/.pnpm/{@tiptap_extension-heading@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-heading@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-heading/dist/index.mjs +1 -1
  25. package/dist/node_modules/.pnpm/{@tiptap_extension-horizontal-rule@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-horizontal-rule@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-horizontal-rule/dist/index.cjs +1 -1
  26. package/dist/node_modules/.pnpm/{@tiptap_extension-horizontal-rule@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-horizontal-rule@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-horizontal-rule/dist/index.mjs +1 -1
  27. package/dist/node_modules/.pnpm/{@tiptap_extension-image@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-image@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-image/dist/index.cjs +1 -1
  28. package/dist/node_modules/.pnpm/{@tiptap_extension-image@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-image@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-image/dist/index.mjs +1 -1
  29. package/dist/node_modules/.pnpm/{@tiptap_extension-italic@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-italic@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-italic/dist/index.cjs +1 -1
  30. package/dist/node_modules/.pnpm/{@tiptap_extension-italic@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-italic@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-italic/dist/index.mjs +1 -1
  31. package/dist/node_modules/.pnpm/{@tiptap_extension-link@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-link@3.20.0_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-link/dist/index.cjs +28 -22
  32. package/dist/node_modules/.pnpm/{@tiptap_extension-link@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-link@3.20.0_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-link/dist/index.mjs +28 -22
  33. package/dist/node_modules/.pnpm/{@tiptap_extension-list@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-list@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-list/dist/index.cjs +1 -1
  34. package/dist/node_modules/.pnpm/{@tiptap_extension-list@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-list@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-list/dist/index.mjs +1 -1
  35. package/dist/node_modules/.pnpm/{@tiptap_extension-paragraph@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-paragraph@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-paragraph/dist/index.cjs +1 -1
  36. package/dist/node_modules/.pnpm/{@tiptap_extension-paragraph@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-paragraph@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-paragraph/dist/index.mjs +1 -1
  37. package/dist/node_modules/.pnpm/{@tiptap_extension-strike@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-strike@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-strike/dist/index.cjs +1 -1
  38. package/dist/node_modules/.pnpm/{@tiptap_extension-strike@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-strike@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-strike/dist/index.mjs +1 -1
  39. package/dist/node_modules/.pnpm/{@tiptap_extension-table@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-table@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-table/dist/index.cjs +1 -1
  40. package/dist/node_modules/.pnpm/{@tiptap_extension-table@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-table@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-table/dist/index.mjs +1 -1
  41. package/dist/node_modules/.pnpm/{@tiptap_extension-text-style@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-text-style@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-text-style/dist/index.cjs +1 -1
  42. package/dist/node_modules/.pnpm/{@tiptap_extension-text-style@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-text-style@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-text-style/dist/index.mjs +1 -1
  43. package/dist/node_modules/.pnpm/{@tiptap_extension-text@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-text@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-text/dist/index.cjs +1 -1
  44. package/dist/node_modules/.pnpm/{@tiptap_extension-text@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-text@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-text/dist/index.mjs +1 -1
  45. package/dist/node_modules/.pnpm/{@tiptap_extension-typography@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-typography@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-typography/dist/index.cjs +1 -1
  46. package/dist/node_modules/.pnpm/{@tiptap_extension-typography@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-typography@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-typography/dist/index.mjs +1 -1
  47. package/dist/node_modules/.pnpm/{@tiptap_extension-underline@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-underline@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-underline/dist/index.cjs +1 -1
  48. package/dist/node_modules/.pnpm/{@tiptap_extension-underline@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-underline@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-underline/dist/index.mjs +1 -1
  49. package/dist/node_modules/.pnpm/{@tiptap_extensions@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extensions@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extensions/dist/index.cjs +1 -1
  50. package/dist/node_modules/.pnpm/{@tiptap_extensions@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extensions@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extensions/dist/index.mjs +1 -1
  51. package/dist/node_modules/.pnpm/{@tiptap_markdown@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_markdown@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/markdown/dist/index.cjs +1 -1
  52. package/dist/node_modules/.pnpm/{@tiptap_markdown@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_markdown@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/markdown/dist/index.mjs +1 -1
  53. package/dist/node_modules/.pnpm/{@tiptap_react@3.15.3_@floating-ui_dom@1.7.4_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tip_d7a2a9a319317617a8908309649a6dda → @tiptap_react@3.15.3_@floating-ui_dom@1.7.4_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tip_b42b5b2d59902d8a01cd4cc3e2d5dc64}/node_modules/@tiptap/react/dist/index.cjs +1 -1
  54. package/dist/node_modules/.pnpm/{@tiptap_react@3.15.3_@floating-ui_dom@1.7.4_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tip_d7a2a9a319317617a8908309649a6dda → @tiptap_react@3.15.3_@floating-ui_dom@1.7.4_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tip_b42b5b2d59902d8a01cd4cc3e2d5dc64}/node_modules/@tiptap/react/dist/index.mjs +2 -2
  55. package/dist/node_modules/.pnpm/{@tiptap_react@3.15.3_@floating-ui_dom@1.7.4_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tip_d7a2a9a319317617a8908309649a6dda → @tiptap_react@3.15.3_@floating-ui_dom@1.7.4_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tip_b42b5b2d59902d8a01cd4cc3e2d5dc64}/node_modules/@tiptap/react/dist/menus/index.cjs +2 -2
  56. package/dist/node_modules/.pnpm/{@tiptap_react@3.15.3_@floating-ui_dom@1.7.4_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tip_d7a2a9a319317617a8908309649a6dda → @tiptap_react@3.15.3_@floating-ui_dom@1.7.4_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tip_b42b5b2d59902d8a01cd4cc3e2d5dc64}/node_modules/@tiptap/react/dist/menus/index.mjs +2 -2
  57. package/dist/node_modules/.pnpm/@tiptap_starter-kit@3.15.3/node_modules/@tiptap/starter-kit/dist/index.cjs +17 -17
  58. package/dist/node_modules/.pnpm/@tiptap_starter-kit@3.15.3/node_modules/@tiptap/starter-kit/dist/index.mjs +17 -17
  59. package/dist/packages/stack/src/plugins/ai-chat/api/plugin.cjs +33 -47
  60. package/dist/packages/stack/src/plugins/ai-chat/api/plugin.mjs +33 -47
  61. package/dist/packages/stack/src/plugins/ai-chat/client/plugin.cjs +14 -21
  62. package/dist/packages/stack/src/plugins/ai-chat/client/plugin.mjs +15 -22
  63. package/dist/packages/stack/src/plugins/blog/api/plugin.cjs +28 -45
  64. package/dist/packages/stack/src/plugins/blog/api/plugin.mjs +22 -39
  65. package/dist/packages/stack/src/plugins/blog/client/plugin.cjs +23 -27
  66. package/dist/packages/stack/src/plugins/blog/client/plugin.mjs +24 -28
  67. package/dist/packages/stack/src/plugins/cms/api/plugin.cjs +14 -17
  68. package/dist/packages/stack/src/plugins/cms/api/plugin.mjs +14 -17
  69. package/dist/packages/stack/src/plugins/cms/client/plugin.cjs +11 -15
  70. package/dist/packages/stack/src/plugins/cms/client/plugin.mjs +12 -16
  71. package/dist/packages/stack/src/plugins/form-builder/api/plugin.cjs +58 -62
  72. package/dist/packages/stack/src/plugins/form-builder/api/plugin.mjs +58 -62
  73. package/dist/packages/stack/src/plugins/form-builder/client/plugin.cjs +12 -12
  74. package/dist/packages/stack/src/plugins/form-builder/client/plugin.mjs +13 -13
  75. package/dist/packages/stack/src/plugins/kanban/api/plugin.cjs +86 -117
  76. package/dist/packages/stack/src/plugins/kanban/api/plugin.mjs +83 -114
  77. package/dist/packages/stack/src/plugins/kanban/client/plugin.cjs +22 -29
  78. package/dist/packages/stack/src/plugins/kanban/client/plugin.mjs +23 -30
  79. package/dist/packages/stack/src/plugins/open-api/api/generator.cjs +2 -1
  80. package/dist/packages/stack/src/plugins/open-api/api/generator.mjs +2 -1
  81. package/dist/packages/stack/src/plugins/ui-builder/client/plugin.cjs +8 -8
  82. package/dist/packages/stack/src/plugins/ui-builder/client/plugin.mjs +9 -9
  83. package/dist/packages/stack/src/plugins/utils.cjs +42 -0
  84. package/dist/packages/stack/src/plugins/utils.mjs +41 -1
  85. package/dist/packages/ui/src/components/minimal-tiptap/components/bubble-menu/link-bubble-menu.cjs +1 -1
  86. package/dist/packages/ui/src/components/minimal-tiptap/components/bubble-menu/link-bubble-menu.mjs +1 -1
  87. package/dist/packages/ui/src/components/minimal-tiptap/extensions/code-block-lowlight/code-block-lowlight.cjs +1 -1
  88. package/dist/packages/ui/src/components/minimal-tiptap/extensions/code-block-lowlight/code-block-lowlight.mjs +1 -1
  89. package/dist/packages/ui/src/components/minimal-tiptap/extensions/color/color.cjs +1 -1
  90. package/dist/packages/ui/src/components/minimal-tiptap/extensions/color/color.mjs +1 -1
  91. package/dist/packages/ui/src/components/minimal-tiptap/extensions/file-handler/index.cjs +1 -1
  92. package/dist/packages/ui/src/components/minimal-tiptap/extensions/file-handler/index.mjs +1 -1
  93. package/dist/packages/ui/src/components/minimal-tiptap/extensions/horizontal-rule/horizontal-rule.cjs +1 -1
  94. package/dist/packages/ui/src/components/minimal-tiptap/extensions/horizontal-rule/horizontal-rule.mjs +1 -1
  95. package/dist/packages/ui/src/components/minimal-tiptap/extensions/image/components/image-view-block.cjs +1 -1
  96. package/dist/packages/ui/src/components/minimal-tiptap/extensions/image/components/image-view-block.mjs +1 -1
  97. package/dist/packages/ui/src/components/minimal-tiptap/extensions/image/image.cjs +2 -2
  98. package/dist/packages/ui/src/components/minimal-tiptap/extensions/image/image.mjs +2 -2
  99. package/dist/packages/ui/src/components/minimal-tiptap/extensions/markdown-paste/markdown-paste.cjs +1 -1
  100. package/dist/packages/ui/src/components/minimal-tiptap/extensions/markdown-paste/markdown-paste.mjs +1 -1
  101. package/dist/packages/ui/src/components/minimal-tiptap/extensions/reset-marks-on-enter/reset-marks-on-enter.cjs +1 -1
  102. package/dist/packages/ui/src/components/minimal-tiptap/extensions/reset-marks-on-enter/reset-marks-on-enter.mjs +1 -1
  103. package/dist/packages/ui/src/components/minimal-tiptap/extensions/unset-all-marks/unset-all-marks.cjs +1 -1
  104. package/dist/packages/ui/src/components/minimal-tiptap/extensions/unset-all-marks/unset-all-marks.mjs +1 -1
  105. package/dist/packages/ui/src/components/minimal-tiptap/hooks/use-minimal-tiptap.cjs +7 -7
  106. package/dist/packages/ui/src/components/minimal-tiptap/hooks/use-minimal-tiptap.mjs +7 -7
  107. package/dist/packages/ui/src/components/minimal-tiptap/hooks/use-tiptap-editor.cjs +1 -1
  108. package/dist/packages/ui/src/components/minimal-tiptap/hooks/use-tiptap-editor.mjs +1 -1
  109. package/dist/packages/ui/src/components/minimal-tiptap/minimal-tiptap.cjs +1 -1
  110. package/dist/packages/ui/src/components/minimal-tiptap/minimal-tiptap.mjs +1 -1
  111. package/dist/plugins/ai-chat/api/index.d.cts +1 -1
  112. package/dist/plugins/ai-chat/api/index.d.mts +1 -1
  113. package/dist/plugins/ai-chat/api/index.d.ts +1 -1
  114. package/dist/plugins/ai-chat/client/hooks/index.d.cts +1 -1
  115. package/dist/plugins/ai-chat/client/hooks/index.d.mts +1 -1
  116. package/dist/plugins/ai-chat/client/hooks/index.d.ts +1 -1
  117. package/dist/plugins/ai-chat/client/index.d.cts +8 -8
  118. package/dist/plugins/ai-chat/client/index.d.mts +8 -8
  119. package/dist/plugins/ai-chat/client/index.d.ts +8 -8
  120. package/dist/plugins/ai-chat/query-keys.d.cts +1 -1
  121. package/dist/plugins/ai-chat/query-keys.d.mts +1 -1
  122. package/dist/plugins/ai-chat/query-keys.d.ts +1 -1
  123. package/dist/plugins/blog/api/index.d.cts +1 -1
  124. package/dist/plugins/blog/api/index.d.mts +1 -1
  125. package/dist/plugins/blog/api/index.d.ts +1 -1
  126. package/dist/plugins/blog/client/index.d.cts +12 -12
  127. package/dist/plugins/blog/client/index.d.mts +12 -12
  128. package/dist/plugins/blog/client/index.d.ts +12 -12
  129. package/dist/plugins/blog/query-keys.d.cts +1 -1
  130. package/dist/plugins/blog/query-keys.d.mts +1 -1
  131. package/dist/plugins/blog/query-keys.d.ts +1 -1
  132. package/dist/plugins/client/index.cjs +1 -0
  133. package/dist/plugins/client/index.d.cts +8 -1
  134. package/dist/plugins/client/index.d.mts +8 -1
  135. package/dist/plugins/client/index.d.ts +8 -1
  136. package/dist/plugins/client/index.mjs +1 -1
  137. package/dist/plugins/cms/api/index.d.cts +2 -2
  138. package/dist/plugins/cms/api/index.d.mts +2 -2
  139. package/dist/plugins/cms/api/index.d.ts +2 -2
  140. package/dist/plugins/cms/client/hooks/index.d.cts +1 -1
  141. package/dist/plugins/cms/client/hooks/index.d.mts +1 -1
  142. package/dist/plugins/cms/client/hooks/index.d.ts +1 -1
  143. package/dist/plugins/cms/client/index.d.cts +6 -6
  144. package/dist/plugins/cms/client/index.d.mts +6 -6
  145. package/dist/plugins/cms/client/index.d.ts +6 -6
  146. package/dist/plugins/cms/query-keys.d.cts +2 -2
  147. package/dist/plugins/cms/query-keys.d.mts +2 -2
  148. package/dist/plugins/cms/query-keys.d.ts +2 -2
  149. package/dist/plugins/form-builder/api/index.d.cts +2 -2
  150. package/dist/plugins/form-builder/api/index.d.mts +2 -2
  151. package/dist/plugins/form-builder/api/index.d.ts +2 -2
  152. package/dist/plugins/form-builder/client/components/index.d.cts +1 -1
  153. package/dist/plugins/form-builder/client/components/index.d.mts +1 -1
  154. package/dist/plugins/form-builder/client/components/index.d.ts +1 -1
  155. package/dist/plugins/form-builder/client/hooks/index.d.cts +1 -1
  156. package/dist/plugins/form-builder/client/hooks/index.d.mts +1 -1
  157. package/dist/plugins/form-builder/client/hooks/index.d.ts +1 -1
  158. package/dist/plugins/form-builder/client/index.d.cts +6 -6
  159. package/dist/plugins/form-builder/client/index.d.mts +6 -6
  160. package/dist/plugins/form-builder/client/index.d.ts +6 -6
  161. package/dist/plugins/form-builder/query-keys.d.cts +2 -2
  162. package/dist/plugins/form-builder/query-keys.d.mts +2 -2
  163. package/dist/plugins/form-builder/query-keys.d.ts +2 -2
  164. package/dist/plugins/kanban/api/index.d.cts +1 -1
  165. package/dist/plugins/kanban/api/index.d.mts +1 -1
  166. package/dist/plugins/kanban/api/index.d.ts +1 -1
  167. package/dist/plugins/kanban/client/index.d.cts +12 -12
  168. package/dist/plugins/kanban/client/index.d.mts +12 -12
  169. package/dist/plugins/kanban/client/index.d.ts +12 -12
  170. package/dist/plugins/kanban/query-keys.d.cts +1 -1
  171. package/dist/plugins/kanban/query-keys.d.mts +1 -1
  172. package/dist/plugins/kanban/query-keys.d.ts +1 -1
  173. package/dist/plugins/ui-builder/client/hooks/index.d.cts +1 -1
  174. package/dist/plugins/ui-builder/client/hooks/index.d.mts +1 -1
  175. package/dist/plugins/ui-builder/client/hooks/index.d.ts +1 -1
  176. package/dist/plugins/ui-builder/client/index.d.cts +3 -3
  177. package/dist/plugins/ui-builder/client/index.d.mts +3 -3
  178. package/dist/plugins/ui-builder/client/index.d.ts +3 -3
  179. package/dist/plugins/ui-builder/index.d.cts +2 -2
  180. package/dist/plugins/ui-builder/index.d.mts +2 -2
  181. package/dist/plugins/ui-builder/index.d.ts +2 -2
  182. package/dist/shared/{stack.C-WUPMT6.d.cts → stack.B2xZTSiO.d.cts} +4 -4
  183. package/dist/shared/{stack.CczspVn2.d.mts → stack.B58oHdqm.d.mts} +1 -1
  184. package/dist/shared/{stack.BepFXT3w.d.mts → stack.B8D4r97Z.d.mts} +22 -22
  185. package/dist/shared/{stack.CVDTkMoO.d.mts → stack.B8QD11QU.d.cts} +7 -7
  186. package/dist/shared/{stack.CVDTkMoO.d.cts → stack.B8QD11QU.d.mts} +7 -7
  187. package/dist/shared/{stack.CVDTkMoO.d.ts → stack.B8QD11QU.d.ts} +7 -7
  188. package/dist/shared/{stack.kcdnD4gA.d.cts → stack.BgTmujxW.d.mts} +1 -1
  189. package/dist/shared/{stack.DdI5W6MB.d.mts → stack.BozPgbrZ.d.cts} +19 -19
  190. package/dist/shared/{stack.DdI5W6MB.d.ts → stack.BozPgbrZ.d.mts} +19 -19
  191. package/dist/shared/{stack.DdI5W6MB.d.cts → stack.BozPgbrZ.d.ts} +19 -19
  192. package/dist/shared/{stack.BUkC2EsZ.d.cts → stack.C9Mg2Q46.d.cts} +1 -1
  193. package/dist/shared/{stack.Kq2-QzOC.d.ts → stack.CLQuVdwK.d.ts} +1 -1
  194. package/dist/shared/{stack.B7ONvlD_.d.mts → stack.CSx98K5H.d.cts} +1 -1
  195. package/dist/shared/{stack.BEn34wW6.d.ts → stack.CTDVxbrA.d.ts} +12 -12
  196. package/dist/shared/{stack.C-Ptrz8s.d.ts → stack.Cj_zKww4.d.ts} +4 -4
  197. package/dist/shared/{stack.DWoCZff7.d.cts → stack.D-b5zbPm.d.cts} +12 -12
  198. package/dist/shared/{stack.CL8ts1Mu.d.ts → stack.DXnclTG7.d.ts} +8 -8
  199. package/dist/shared/{stack.heOA9gzA.d.cts → stack.DaZM10cp.d.cts} +8 -8
  200. package/dist/shared/{stack.CgWzG5jH.d.ts → stack.DgKOwl20.d.ts} +22 -22
  201. package/dist/shared/{stack.DTDxgFj8.d.mts → stack.FVWf2JhZ.d.mts} +12 -12
  202. package/dist/shared/{stack.Dk5r4W1F.d.mts → stack.cfCkioTe.d.mts} +8 -8
  203. package/dist/shared/{stack.6fUOjLs9.d.mts → stack.dH7u-TJH.d.mts} +4 -4
  204. package/dist/shared/{stack.DASmUVjX.d.ts → stack.sO33ZDhK.d.ts} +1 -1
  205. package/dist/shared/{stack.D3GB6wKv.d.cts → stack.uWSqCWAb.d.cts} +22 -22
  206. package/package.json +1 -1
  207. package/src/plugins/ai-chat/api/plugin.ts +48 -63
  208. package/src/plugins/ai-chat/client/plugin.tsx +23 -31
  209. package/src/plugins/blog/api/plugin.ts +31 -47
  210. package/src/plugins/blog/client/plugin.tsx +36 -39
  211. package/src/plugins/client/index.ts +5 -1
  212. package/src/plugins/cms/api/plugin.ts +14 -17
  213. package/src/plugins/cms/client/plugin.tsx +18 -21
  214. package/src/plugins/cms/types.ts +7 -7
  215. package/src/plugins/form-builder/api/plugin.ts +64 -64
  216. package/src/plugins/form-builder/client/plugin.tsx +19 -18
  217. package/src/plugins/form-builder/types.ts +19 -24
  218. package/src/plugins/kanban/api/plugin.ts +111 -136
  219. package/src/plugins/kanban/client/plugin.tsx +35 -41
  220. package/src/plugins/open-api/api/generator.ts +3 -1
  221. package/src/plugins/ui-builder/client/plugin.tsx +11 -10
  222. package/src/plugins/ui-builder/types.ts +4 -4
  223. package/src/plugins/utils.ts +92 -1
  224. /package/dist/node_modules/.pnpm/{@tiptap_core@3.15.3_@tiptap_pm@3.15.3 → @tiptap_core@3.20.0_@tiptap_pm@3.15.3}/node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.cjs +0 -0
  225. /package/dist/node_modules/.pnpm/{@tiptap_core@3.15.3_@tiptap_pm@3.15.3 → @tiptap_core@3.20.0_@tiptap_pm@3.15.3}/node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.mjs +0 -0
@@ -1,5 +1,5 @@
1
1
  import * as _tanstack_react_query from '@tanstack/react-query';
2
- import { S as SerializedUIBuilderPage } from '../../../../shared/stack.C-WUPMT6.cjs';
2
+ import { S as SerializedUIBuilderPage } from '../../../../shared/stack.B2xZTSiO.cjs';
3
3
  import { C as ComponentLayer, V as Variable } from '../../../../shared/stack.B-YHz18S.cjs';
4
4
  import 'zod';
5
5
  import 'react';
@@ -1,5 +1,5 @@
1
1
  import * as _tanstack_react_query from '@tanstack/react-query';
2
- import { S as SerializedUIBuilderPage } from '../../../../shared/stack.6fUOjLs9.mjs';
2
+ import { S as SerializedUIBuilderPage } from '../../../../shared/stack.dH7u-TJH.mjs';
3
3
  import { C as ComponentLayer, V as Variable } from '../../../../shared/stack.D1DMlJp-.mjs';
4
4
  import 'zod';
5
5
  import 'react';
@@ -1,5 +1,5 @@
1
1
  import * as _tanstack_react_query from '@tanstack/react-query';
2
- import { S as SerializedUIBuilderPage } from '../../../../shared/stack.C-Ptrz8s.js';
2
+ import { S as SerializedUIBuilderPage } from '../../../../shared/stack.Cj_zKww4.js';
3
3
  import { C as ComponentLayer, V as Variable } from '../../../../shared/stack.GygI_T3X.js';
4
4
  import 'zod';
5
5
  import 'react';
@@ -3,7 +3,7 @@ import * as react from 'react';
3
3
  import react__default, { ComponentType } from 'react';
4
4
  import * as _btst_yar from '@btst/yar';
5
5
  import { QueryClient } from '@tanstack/react-query';
6
- import { c as UIBuilderClientHooks } from '../../../shared/stack.C-WUPMT6.cjs';
6
+ import { c as UIBuilderClientHooks } from '../../../shared/stack.B2xZTSiO.cjs';
7
7
  import { a as ComponentRegistry, F as FieldConfigFunction, C as ComponentLayer } from '../../../shared/stack.B-YHz18S.cjs';
8
8
  import * as react_jsx_runtime from 'react/jsx-runtime';
9
9
  import { A as AutoFormInputComponentProps, F as FieldConfigItem } from '../../../shared/stack.8nldKomx.cjs';
@@ -50,11 +50,11 @@ interface UIBuilderClientConfig {
50
50
  * hooks: {
51
51
  * beforeLoadPageList: async (ctx) => {
52
52
  * const session = await getSession(ctx.headers)
53
- * return session?.user?.isAdmin === true
53
+ * if (!session?.user?.isAdmin) throw new Error("Admin access required")
54
54
  * },
55
55
  * beforeLoadPageBuilder: async (pageId, ctx) => {
56
56
  * const session = await getSession(ctx.headers)
57
- * return session?.user?.isAdmin === true
57
+ * if (!session?.user?.isAdmin) throw new Error("Admin access required")
58
58
  * },
59
59
  * onLoadError: () => redirect("/auth/sign-in"),
60
60
  * },
@@ -3,7 +3,7 @@ import * as react from 'react';
3
3
  import react__default, { ComponentType } from 'react';
4
4
  import * as _btst_yar from '@btst/yar';
5
5
  import { QueryClient } from '@tanstack/react-query';
6
- import { c as UIBuilderClientHooks } from '../../../shared/stack.6fUOjLs9.mjs';
6
+ import { c as UIBuilderClientHooks } from '../../../shared/stack.dH7u-TJH.mjs';
7
7
  import { a as ComponentRegistry, F as FieldConfigFunction, C as ComponentLayer } from '../../../shared/stack.D1DMlJp-.mjs';
8
8
  import * as react_jsx_runtime from 'react/jsx-runtime';
9
9
  import { A as AutoFormInputComponentProps, F as FieldConfigItem } from '../../../shared/stack.8nldKomx.mjs';
@@ -50,11 +50,11 @@ interface UIBuilderClientConfig {
50
50
  * hooks: {
51
51
  * beforeLoadPageList: async (ctx) => {
52
52
  * const session = await getSession(ctx.headers)
53
- * return session?.user?.isAdmin === true
53
+ * if (!session?.user?.isAdmin) throw new Error("Admin access required")
54
54
  * },
55
55
  * beforeLoadPageBuilder: async (pageId, ctx) => {
56
56
  * const session = await getSession(ctx.headers)
57
- * return session?.user?.isAdmin === true
57
+ * if (!session?.user?.isAdmin) throw new Error("Admin access required")
58
58
  * },
59
59
  * onLoadError: () => redirect("/auth/sign-in"),
60
60
  * },
@@ -3,7 +3,7 @@ import * as react from 'react';
3
3
  import react__default, { ComponentType } from 'react';
4
4
  import * as _btst_yar from '@btst/yar';
5
5
  import { QueryClient } from '@tanstack/react-query';
6
- import { c as UIBuilderClientHooks } from '../../../shared/stack.C-Ptrz8s.js';
6
+ import { c as UIBuilderClientHooks } from '../../../shared/stack.Cj_zKww4.js';
7
7
  import { a as ComponentRegistry, F as FieldConfigFunction, C as ComponentLayer } from '../../../shared/stack.GygI_T3X.js';
8
8
  import * as react_jsx_runtime from 'react/jsx-runtime';
9
9
  import { A as AutoFormInputComponentProps, F as FieldConfigItem } from '../../../shared/stack.8nldKomx.js';
@@ -50,11 +50,11 @@ interface UIBuilderClientConfig {
50
50
  * hooks: {
51
51
  * beforeLoadPageList: async (ctx) => {
52
52
  * const session = await getSession(ctx.headers)
53
- * return session?.user?.isAdmin === true
53
+ * if (!session?.user?.isAdmin) throw new Error("Admin access required")
54
54
  * },
55
55
  * beforeLoadPageBuilder: async (pageId, ctx) => {
56
56
  * const session = await getSession(ctx.headers)
57
- * return session?.user?.isAdmin === true
57
+ * if (!session?.user?.isAdmin) throw new Error("Admin access required")
58
58
  * },
59
59
  * onLoadError: () => redirect("/auth/sign-in"),
60
60
  * },
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
- import { C as ContentTypeConfig } from '../../shared/stack.CVDTkMoO.cjs';
3
- export { L as LoaderContext, b as PaginatedUIBuilderPages, P as ParsedUIBuilderPage, S as SerializedUIBuilderPage, c as UIBuilderClientHooks, a as UIBuilderPage, U as UIBuilderPageData } from '../../shared/stack.C-WUPMT6.cjs';
2
+ import { C as ContentTypeConfig } from '../../shared/stack.B8QD11QU.cjs';
3
+ export { L as LoaderContext, b as PaginatedUIBuilderPages, P as ParsedUIBuilderPage, S as SerializedUIBuilderPage, c as UIBuilderClientHooks, a as UIBuilderPage, U as UIBuilderPageData } from '../../shared/stack.B2xZTSiO.cjs';
4
4
  export { C as ComponentLayer, a as ComponentRegistry, R as RegistryEntry, V as Variable } from '../../shared/stack.B-YHz18S.cjs';
5
5
  import 'react';
6
6
  import '../../shared/stack.8nldKomx.cjs';
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
- import { C as ContentTypeConfig } from '../../shared/stack.CVDTkMoO.mjs';
3
- export { L as LoaderContext, b as PaginatedUIBuilderPages, P as ParsedUIBuilderPage, S as SerializedUIBuilderPage, c as UIBuilderClientHooks, a as UIBuilderPage, U as UIBuilderPageData } from '../../shared/stack.6fUOjLs9.mjs';
2
+ import { C as ContentTypeConfig } from '../../shared/stack.B8QD11QU.mjs';
3
+ export { L as LoaderContext, b as PaginatedUIBuilderPages, P as ParsedUIBuilderPage, S as SerializedUIBuilderPage, c as UIBuilderClientHooks, a as UIBuilderPage, U as UIBuilderPageData } from '../../shared/stack.dH7u-TJH.mjs';
4
4
  export { C as ComponentLayer, a as ComponentRegistry, R as RegistryEntry, V as Variable } from '../../shared/stack.D1DMlJp-.mjs';
5
5
  import 'react';
6
6
  import '../../shared/stack.8nldKomx.mjs';
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
- import { C as ContentTypeConfig } from '../../shared/stack.CVDTkMoO.js';
3
- export { L as LoaderContext, b as PaginatedUIBuilderPages, P as ParsedUIBuilderPage, S as SerializedUIBuilderPage, c as UIBuilderClientHooks, a as UIBuilderPage, U as UIBuilderPageData } from '../../shared/stack.C-Ptrz8s.js';
2
+ import { C as ContentTypeConfig } from '../../shared/stack.B8QD11QU.js';
3
+ export { L as LoaderContext, b as PaginatedUIBuilderPages, P as ParsedUIBuilderPage, S as SerializedUIBuilderPage, c as UIBuilderClientHooks, a as UIBuilderPage, U as UIBuilderPageData } from '../../shared/stack.Cj_zKww4.js';
4
4
  export { C as ComponentLayer, a as ComponentRegistry, R as RegistryEntry, V as Variable } from '../../shared/stack.GygI_T3X.js';
5
5
  import 'react';
6
6
  import '../../shared/stack.8nldKomx.js';
@@ -83,21 +83,21 @@ interface LoaderContext {
83
83
  */
84
84
  interface UIBuilderClientHooks {
85
85
  /**
86
- * Called before loading the page list. Return false to cancel loading.
86
+ * Called before loading the page list. Throw an error to cancel loading.
87
87
  * @param context - Loader context with path, params, etc.
88
88
  */
89
- beforeLoadPageList?: (context: LoaderContext) => Promise<boolean> | boolean;
89
+ beforeLoadPageList?: (context: LoaderContext) => Promise<void> | void;
90
90
  /**
91
91
  * Called after the page list is loaded.
92
92
  * @param context - Loader context
93
93
  */
94
94
  afterLoadPageList?: (context: LoaderContext) => Promise<void> | void;
95
95
  /**
96
- * Called before loading the page builder. Return false to cancel loading.
96
+ * Called before loading the page builder. Throw an error to cancel loading.
97
97
  * @param pageId - The page ID (undefined for new pages)
98
98
  * @param context - Loader context
99
99
  */
100
- beforeLoadPageBuilder?: (pageId: string | undefined, context: LoaderContext) => Promise<boolean> | boolean;
100
+ beforeLoadPageBuilder?: (pageId: string | undefined, context: LoaderContext) => Promise<void> | void;
101
101
  /**
102
102
  * Called after the page builder is loaded.
103
103
  * @param pageId - The page ID (undefined for new pages)
@@ -1,5 +1,5 @@
1
1
  import * as _btst_stack_plugins_api from '@btst/stack/plugins/api';
2
- import { a as SerializedContentItemWithType, S as SerializedContentType, b as ContentType, c as ContentItem, d as SerializedContentItem, e as ContentItemWithType, f as CMSBackendConfig, I as InverseRelation } from './stack.CVDTkMoO.mjs';
2
+ import { a as SerializedContentItemWithType, S as SerializedContentType, b as ContentType, c as ContentItem, d as SerializedContentItem, e as ContentItemWithType, f as CMSBackendConfig, I as InverseRelation } from './stack.B8QD11QU.mjs';
3
3
  import * as better_call from 'better-call';
4
4
  import { z } from 'zod';
5
5
  import { Adapter } from '@btst/db';
@@ -189,25 +189,25 @@ interface KanbanApiContext<TBody = unknown, TParams = unknown, TQuery = unknown>
189
189
  */
190
190
  interface KanbanBackendHooks {
191
191
  /**
192
- * Called before listing boards. Return false to deny access.
192
+ * Called before listing boards. Throw an error to deny access.
193
193
  */
194
- onBeforeListBoards?: (filter: z.infer<typeof BoardListQuerySchema>, context: KanbanApiContext) => Promise<boolean> | boolean;
194
+ onBeforeListBoards?: (filter: z.infer<typeof BoardListQuerySchema>, context: KanbanApiContext) => Promise<void> | void;
195
195
  /**
196
- * Called before creating a board. Return false to deny access.
196
+ * Called before creating a board. Throw an error to deny access.
197
197
  */
198
- onBeforeCreateBoard?: (data: z.infer<typeof createBoardSchema>, context: KanbanApiContext) => Promise<boolean> | boolean;
198
+ onBeforeCreateBoard?: (data: z.infer<typeof createBoardSchema>, context: KanbanApiContext) => Promise<void> | void;
199
199
  /**
200
- * Called before reading a single board. Return false to deny access.
200
+ * Called before reading a single board. Throw an error to deny access.
201
201
  */
202
- onBeforeReadBoard?: (boardId: string, context: KanbanApiContext) => Promise<boolean> | boolean;
202
+ onBeforeReadBoard?: (boardId: string, context: KanbanApiContext) => Promise<void> | void;
203
203
  /**
204
- * Called before updating a board. Return false to deny access.
204
+ * Called before updating a board. Throw an error to deny access.
205
205
  */
206
- onBeforeUpdateBoard?: (boardId: string, data: z.infer<typeof updateBoardSchema>, context: KanbanApiContext) => Promise<boolean> | boolean;
206
+ onBeforeUpdateBoard?: (boardId: string, data: z.infer<typeof updateBoardSchema>, context: KanbanApiContext) => Promise<void> | void;
207
207
  /**
208
- * Called before deleting a board. Return false to deny access.
208
+ * Called before deleting a board. Throw an error to deny access.
209
209
  */
210
- onBeforeDeleteBoard?: (boardId: string, context: KanbanApiContext) => Promise<boolean> | boolean;
210
+ onBeforeDeleteBoard?: (boardId: string, context: KanbanApiContext) => Promise<void> | void;
211
211
  /**
212
212
  * Called after boards are listed successfully.
213
213
  * Receives the items array (same shape as `board[]`) for consistency
@@ -251,17 +251,17 @@ interface KanbanBackendHooks {
251
251
  */
252
252
  onDeleteBoardError?: (error: Error, context: KanbanApiContext) => Promise<void> | void;
253
253
  /**
254
- * Called before creating a column. Return false to deny access.
254
+ * Called before creating a column. Throw an error to deny access.
255
255
  */
256
- onBeforeCreateColumn?: (data: z.infer<typeof createColumnSchema>, context: KanbanApiContext) => Promise<boolean> | boolean;
256
+ onBeforeCreateColumn?: (data: z.infer<typeof createColumnSchema>, context: KanbanApiContext) => Promise<void> | void;
257
257
  /**
258
- * Called before updating a column. Return false to deny access.
258
+ * Called before updating a column. Throw an error to deny access.
259
259
  */
260
- onBeforeUpdateColumn?: (columnId: string, data: z.infer<typeof updateColumnSchema>, context: KanbanApiContext) => Promise<boolean> | boolean;
260
+ onBeforeUpdateColumn?: (columnId: string, data: z.infer<typeof updateColumnSchema>, context: KanbanApiContext) => Promise<void> | void;
261
261
  /**
262
- * Called before deleting a column. Return false to deny access.
262
+ * Called before deleting a column. Throw an error to deny access.
263
263
  */
264
- onBeforeDeleteColumn?: (columnId: string, context: KanbanApiContext) => Promise<boolean> | boolean;
264
+ onBeforeDeleteColumn?: (columnId: string, context: KanbanApiContext) => Promise<void> | void;
265
265
  /**
266
266
  * Called after a column is created successfully
267
267
  */
@@ -275,17 +275,17 @@ interface KanbanBackendHooks {
275
275
  */
276
276
  onColumnDeleted?: (columnId: string, context: KanbanApiContext) => Promise<void> | void;
277
277
  /**
278
- * Called before creating a task. Return false to deny access.
278
+ * Called before creating a task. Throw an error to deny access.
279
279
  */
280
- onBeforeCreateTask?: (data: z.infer<typeof createTaskSchema>, context: KanbanApiContext) => Promise<boolean> | boolean;
280
+ onBeforeCreateTask?: (data: z.infer<typeof createTaskSchema>, context: KanbanApiContext) => Promise<void> | void;
281
281
  /**
282
- * Called before updating a task. Return false to deny access.
282
+ * Called before updating a task. Throw an error to deny access.
283
283
  */
284
- onBeforeUpdateTask?: (taskId: string, data: z.infer<typeof updateTaskSchema>, context: KanbanApiContext) => Promise<boolean> | boolean;
284
+ onBeforeUpdateTask?: (taskId: string, data: z.infer<typeof updateTaskSchema>, context: KanbanApiContext) => Promise<void> | void;
285
285
  /**
286
- * Called before deleting a task. Return false to deny access.
286
+ * Called before deleting a task. Throw an error to deny access.
287
287
  */
288
- onBeforeDeleteTask?: (taskId: string, context: KanbanApiContext) => Promise<boolean> | boolean;
288
+ onBeforeDeleteTask?: (taskId: string, context: KanbanApiContext) => Promise<void> | void;
289
289
  /**
290
290
  * Called after a task is created successfully
291
291
  */
@@ -130,21 +130,21 @@ interface CMSHookContext {
130
130
  /**
131
131
  * Hooks for customizing CMS backend behavior
132
132
  *
133
- * Note: Before hooks can only deny operations by returning `false`.
133
+ * Note: Before hooks deny operations by throwing an error.
134
134
  * They cannot modify the data being saved. This ensures consistency
135
135
  * between the stored content item data and relation junction tables.
136
136
  */
137
137
  interface CMSBackendHooks {
138
- /** Called before creating a content item. Return false to deny the operation. */
139
- onBeforeCreate?: (data: Record<string, unknown>, context: CMSHookContext) => Promise<false | void> | false | void;
138
+ /** Called before creating a content item. Throw an error to deny the operation. */
139
+ onBeforeCreate?: (data: Record<string, unknown>, context: CMSHookContext) => Promise<void> | void;
140
140
  /** Called after creating a content item */
141
141
  onAfterCreate?: (item: SerializedContentItem, context: CMSHookContext) => Promise<void> | void;
142
- /** Called before updating a content item. Return false to deny the operation. */
143
- onBeforeUpdate?: (id: string, data: Record<string, unknown>, context: CMSHookContext) => Promise<false | void> | false | void;
142
+ /** Called before updating a content item. Throw an error to deny the operation. */
143
+ onBeforeUpdate?: (id: string, data: Record<string, unknown>, context: CMSHookContext) => Promise<void> | void;
144
144
  /** Called after updating a content item */
145
145
  onAfterUpdate?: (item: SerializedContentItem, context: CMSHookContext) => Promise<void> | void;
146
- /** Called before deleting a content item */
147
- onBeforeDelete?: (id: string, context: CMSHookContext) => Promise<boolean> | boolean;
146
+ /** Called before deleting a content item. Throw an error to deny the operation. */
147
+ onBeforeDelete?: (id: string, context: CMSHookContext) => Promise<void> | void;
148
148
  /** Called after deleting a content item */
149
149
  onAfterDelete?: (id: string, context: CMSHookContext) => Promise<void> | void;
150
150
  /** Called on any CMS error */
@@ -130,21 +130,21 @@ interface CMSHookContext {
130
130
  /**
131
131
  * Hooks for customizing CMS backend behavior
132
132
  *
133
- * Note: Before hooks can only deny operations by returning `false`.
133
+ * Note: Before hooks deny operations by throwing an error.
134
134
  * They cannot modify the data being saved. This ensures consistency
135
135
  * between the stored content item data and relation junction tables.
136
136
  */
137
137
  interface CMSBackendHooks {
138
- /** Called before creating a content item. Return false to deny the operation. */
139
- onBeforeCreate?: (data: Record<string, unknown>, context: CMSHookContext) => Promise<false | void> | false | void;
138
+ /** Called before creating a content item. Throw an error to deny the operation. */
139
+ onBeforeCreate?: (data: Record<string, unknown>, context: CMSHookContext) => Promise<void> | void;
140
140
  /** Called after creating a content item */
141
141
  onAfterCreate?: (item: SerializedContentItem, context: CMSHookContext) => Promise<void> | void;
142
- /** Called before updating a content item. Return false to deny the operation. */
143
- onBeforeUpdate?: (id: string, data: Record<string, unknown>, context: CMSHookContext) => Promise<false | void> | false | void;
142
+ /** Called before updating a content item. Throw an error to deny the operation. */
143
+ onBeforeUpdate?: (id: string, data: Record<string, unknown>, context: CMSHookContext) => Promise<void> | void;
144
144
  /** Called after updating a content item */
145
145
  onAfterUpdate?: (item: SerializedContentItem, context: CMSHookContext) => Promise<void> | void;
146
- /** Called before deleting a content item */
147
- onBeforeDelete?: (id: string, context: CMSHookContext) => Promise<boolean> | boolean;
146
+ /** Called before deleting a content item. Throw an error to deny the operation. */
147
+ onBeforeDelete?: (id: string, context: CMSHookContext) => Promise<void> | void;
148
148
  /** Called after deleting a content item */
149
149
  onAfterDelete?: (id: string, context: CMSHookContext) => Promise<void> | void;
150
150
  /** Called on any CMS error */
@@ -130,21 +130,21 @@ interface CMSHookContext {
130
130
  /**
131
131
  * Hooks for customizing CMS backend behavior
132
132
  *
133
- * Note: Before hooks can only deny operations by returning `false`.
133
+ * Note: Before hooks deny operations by throwing an error.
134
134
  * They cannot modify the data being saved. This ensures consistency
135
135
  * between the stored content item data and relation junction tables.
136
136
  */
137
137
  interface CMSBackendHooks {
138
- /** Called before creating a content item. Return false to deny the operation. */
139
- onBeforeCreate?: (data: Record<string, unknown>, context: CMSHookContext) => Promise<false | void> | false | void;
138
+ /** Called before creating a content item. Throw an error to deny the operation. */
139
+ onBeforeCreate?: (data: Record<string, unknown>, context: CMSHookContext) => Promise<void> | void;
140
140
  /** Called after creating a content item */
141
141
  onAfterCreate?: (item: SerializedContentItem, context: CMSHookContext) => Promise<void> | void;
142
- /** Called before updating a content item. Return false to deny the operation. */
143
- onBeforeUpdate?: (id: string, data: Record<string, unknown>, context: CMSHookContext) => Promise<false | void> | false | void;
142
+ /** Called before updating a content item. Throw an error to deny the operation. */
143
+ onBeforeUpdate?: (id: string, data: Record<string, unknown>, context: CMSHookContext) => Promise<void> | void;
144
144
  /** Called after updating a content item */
145
145
  onAfterUpdate?: (item: SerializedContentItem, context: CMSHookContext) => Promise<void> | void;
146
- /** Called before deleting a content item */
147
- onBeforeDelete?: (id: string, context: CMSHookContext) => Promise<boolean> | boolean;
146
+ /** Called before deleting a content item. Throw an error to deny the operation. */
147
+ onBeforeDelete?: (id: string, context: CMSHookContext) => Promise<void> | void;
148
148
  /** Called after deleting a content item */
149
149
  onAfterDelete?: (id: string, context: CMSHookContext) => Promise<void> | void;
150
150
  /** Called on any CMS error */
@@ -1,6 +1,6 @@
1
1
  import * as _btst_stack_plugins_api from '@btst/stack/plugins/api';
2
2
  import * as better_call from 'better-call';
3
- import { S as SerializedForm, b as SerializedFormSubmissionWithData, F as Form, d as FormSubmission, a as SerializedFormSubmission, e as FormSubmissionWithForm, f as FormBuilderBackendConfig } from './stack.DdI5W6MB.cjs';
3
+ import { S as SerializedForm, b as SerializedFormSubmissionWithData, F as Form, d as FormSubmission, a as SerializedFormSubmission, e as FormSubmissionWithForm, f as FormBuilderBackendConfig } from './stack.BozPgbrZ.mjs';
4
4
  import { z } from 'zod';
5
5
  import { Adapter } from '@btst/db';
6
6
  import { QueryClient } from '@tanstack/react-query';
@@ -146,32 +146,32 @@ interface FormUpdate {
146
146
  * Backend hooks for Form Builder plugin
147
147
  *
148
148
  * All CRUD hooks receive ipAddress and headers for auth/rate limiting.
149
- * Return false from onBefore* hooks to reject the operation (throws 403).
149
+ * Throw an error from onBefore* hooks to reject the operation (throws 403).
150
150
  */
151
151
  interface FormBuilderBackendHooks {
152
- /** Called before listing forms. Return false to deny access (403). */
153
- onBeforeListForms?: (ctx: FormBuilderHookContext) => Promise<boolean> | boolean;
154
- /** Called before creating a form. Return false to deny, or modified data. */
155
- onBeforeFormCreated?: (data: FormInput, ctx: FormBuilderHookContext) => Promise<FormInput | false> | FormInput | false;
152
+ /** Called before listing forms. Throw an error to deny access (403). */
153
+ onBeforeListForms?: (ctx: FormBuilderHookContext) => Promise<void> | void;
154
+ /** Called before creating a form. Throw an error to deny, or return modified data. */
155
+ onBeforeFormCreated?: (data: FormInput, ctx: FormBuilderHookContext) => Promise<FormInput | void> | FormInput | void;
156
156
  /** Called after a form is created */
157
157
  onAfterFormCreated?: (form: SerializedForm, ctx: FormBuilderHookContext) => Promise<void> | void;
158
- /** Called before getting a form by ID or slug. Return false to deny access. */
159
- onBeforeGetForm?: (idOrSlug: string, ctx: FormBuilderHookContext) => Promise<boolean> | boolean;
160
- /** Called before updating a form. Return false to deny, or modified data. */
161
- onBeforeFormUpdated?: (id: string, data: FormUpdate, ctx: FormBuilderHookContext) => Promise<FormUpdate | false> | FormUpdate | false;
158
+ /** Called before getting a form by ID or slug. Throw an error to deny access. */
159
+ onBeforeGetForm?: (idOrSlug: string, ctx: FormBuilderHookContext) => Promise<void> | void;
160
+ /** Called before updating a form. Throw an error to deny, or return modified data. */
161
+ onBeforeFormUpdated?: (id: string, data: FormUpdate, ctx: FormBuilderHookContext) => Promise<FormUpdate | void> | FormUpdate | void;
162
162
  /** Called after a form is updated */
163
163
  onAfterFormUpdated?: (form: SerializedForm, ctx: FormBuilderHookContext) => Promise<void> | void;
164
- /** Called before deleting a form. Return false to deny. */
165
- onBeforeFormDeleted?: (id: string, ctx: FormBuilderHookContext) => Promise<boolean> | boolean;
164
+ /** Called before deleting a form. Throw an error to deny. */
165
+ onBeforeFormDeleted?: (id: string, ctx: FormBuilderHookContext) => Promise<void> | void;
166
166
  /** Called after a form is deleted */
167
167
  onAfterFormDeleted?: (id: string, ctx: FormBuilderHookContext) => Promise<void> | void;
168
168
  /**
169
169
  * Called before processing a form submission.
170
170
  * Use for: spam protection, rate limiting, data validation/enrichment.
171
171
  *
172
- * @returns false to reject submission (400), or modified data to continue
172
+ * Throw an error to reject submission (400), or return modified data to continue.
173
173
  */
174
- onBeforeSubmission?: (formSlug: string, data: Record<string, unknown>, ctx: SubmissionHookContext) => Promise<Record<string, unknown> | false> | Record<string, unknown> | false;
174
+ onBeforeSubmission?: (formSlug: string, data: Record<string, unknown>, ctx: SubmissionHookContext) => Promise<Record<string, unknown> | void> | Record<string, unknown> | void;
175
175
  /**
176
176
  * Called after a submission is saved.
177
177
  * Use for: sending emails, storing in CRM, triggering workflows.
@@ -179,12 +179,12 @@ interface FormBuilderBackendHooks {
179
179
  onAfterSubmission?: (submission: SerializedFormSubmission, form: SerializedForm, ctx: SubmissionHookContext) => Promise<void> | void;
180
180
  /** Called when a submission fails */
181
181
  onSubmissionError?: (error: Error, formSlug: string, data: Record<string, unknown>, ctx: SubmissionHookContext) => Promise<void> | void;
182
- /** Called before listing submissions. Return false to deny access (403). */
183
- onBeforeListSubmissions?: (formId: string, ctx: FormBuilderHookContext) => Promise<boolean> | boolean;
184
- /** Called before getting a submission. Return false to deny access. */
185
- onBeforeGetSubmission?: (submissionId: string, ctx: FormBuilderHookContext) => Promise<boolean> | boolean;
186
- /** Called before deleting a submission. Return false to deny. */
187
- onBeforeSubmissionDeleted?: (submissionId: string, ctx: FormBuilderHookContext) => Promise<boolean> | boolean;
182
+ /** Called before listing submissions. Throw an error to deny access (403). */
183
+ onBeforeListSubmissions?: (formId: string, ctx: FormBuilderHookContext) => Promise<void> | void;
184
+ /** Called before getting a submission. Throw an error to deny access. */
185
+ onBeforeGetSubmission?: (submissionId: string, ctx: FormBuilderHookContext) => Promise<void> | void;
186
+ /** Called before deleting a submission. Throw an error to deny. */
187
+ onBeforeSubmissionDeleted?: (submissionId: string, ctx: FormBuilderHookContext) => Promise<void> | void;
188
188
  /** Called after a submission is deleted */
189
189
  onAfterSubmissionDeleted?: (submissionId: string, ctx: FormBuilderHookContext) => Promise<void> | void;
190
190
  /** Called on any error */
@@ -146,32 +146,32 @@ interface FormUpdate {
146
146
  * Backend hooks for Form Builder plugin
147
147
  *
148
148
  * All CRUD hooks receive ipAddress and headers for auth/rate limiting.
149
- * Return false from onBefore* hooks to reject the operation (throws 403).
149
+ * Throw an error from onBefore* hooks to reject the operation (throws 403).
150
150
  */
151
151
  interface FormBuilderBackendHooks {
152
- /** Called before listing forms. Return false to deny access (403). */
153
- onBeforeListForms?: (ctx: FormBuilderHookContext) => Promise<boolean> | boolean;
154
- /** Called before creating a form. Return false to deny, or modified data. */
155
- onBeforeFormCreated?: (data: FormInput, ctx: FormBuilderHookContext) => Promise<FormInput | false> | FormInput | false;
152
+ /** Called before listing forms. Throw an error to deny access (403). */
153
+ onBeforeListForms?: (ctx: FormBuilderHookContext) => Promise<void> | void;
154
+ /** Called before creating a form. Throw an error to deny, or return modified data. */
155
+ onBeforeFormCreated?: (data: FormInput, ctx: FormBuilderHookContext) => Promise<FormInput | void> | FormInput | void;
156
156
  /** Called after a form is created */
157
157
  onAfterFormCreated?: (form: SerializedForm, ctx: FormBuilderHookContext) => Promise<void> | void;
158
- /** Called before getting a form by ID or slug. Return false to deny access. */
159
- onBeforeGetForm?: (idOrSlug: string, ctx: FormBuilderHookContext) => Promise<boolean> | boolean;
160
- /** Called before updating a form. Return false to deny, or modified data. */
161
- onBeforeFormUpdated?: (id: string, data: FormUpdate, ctx: FormBuilderHookContext) => Promise<FormUpdate | false> | FormUpdate | false;
158
+ /** Called before getting a form by ID or slug. Throw an error to deny access. */
159
+ onBeforeGetForm?: (idOrSlug: string, ctx: FormBuilderHookContext) => Promise<void> | void;
160
+ /** Called before updating a form. Throw an error to deny, or return modified data. */
161
+ onBeforeFormUpdated?: (id: string, data: FormUpdate, ctx: FormBuilderHookContext) => Promise<FormUpdate | void> | FormUpdate | void;
162
162
  /** Called after a form is updated */
163
163
  onAfterFormUpdated?: (form: SerializedForm, ctx: FormBuilderHookContext) => Promise<void> | void;
164
- /** Called before deleting a form. Return false to deny. */
165
- onBeforeFormDeleted?: (id: string, ctx: FormBuilderHookContext) => Promise<boolean> | boolean;
164
+ /** Called before deleting a form. Throw an error to deny. */
165
+ onBeforeFormDeleted?: (id: string, ctx: FormBuilderHookContext) => Promise<void> | void;
166
166
  /** Called after a form is deleted */
167
167
  onAfterFormDeleted?: (id: string, ctx: FormBuilderHookContext) => Promise<void> | void;
168
168
  /**
169
169
  * Called before processing a form submission.
170
170
  * Use for: spam protection, rate limiting, data validation/enrichment.
171
171
  *
172
- * @returns false to reject submission (400), or modified data to continue
172
+ * Throw an error to reject submission (400), or return modified data to continue.
173
173
  */
174
- onBeforeSubmission?: (formSlug: string, data: Record<string, unknown>, ctx: SubmissionHookContext) => Promise<Record<string, unknown> | false> | Record<string, unknown> | false;
174
+ onBeforeSubmission?: (formSlug: string, data: Record<string, unknown>, ctx: SubmissionHookContext) => Promise<Record<string, unknown> | void> | Record<string, unknown> | void;
175
175
  /**
176
176
  * Called after a submission is saved.
177
177
  * Use for: sending emails, storing in CRM, triggering workflows.
@@ -179,12 +179,12 @@ interface FormBuilderBackendHooks {
179
179
  onAfterSubmission?: (submission: SerializedFormSubmission, form: SerializedForm, ctx: SubmissionHookContext) => Promise<void> | void;
180
180
  /** Called when a submission fails */
181
181
  onSubmissionError?: (error: Error, formSlug: string, data: Record<string, unknown>, ctx: SubmissionHookContext) => Promise<void> | void;
182
- /** Called before listing submissions. Return false to deny access (403). */
183
- onBeforeListSubmissions?: (formId: string, ctx: FormBuilderHookContext) => Promise<boolean> | boolean;
184
- /** Called before getting a submission. Return false to deny access. */
185
- onBeforeGetSubmission?: (submissionId: string, ctx: FormBuilderHookContext) => Promise<boolean> | boolean;
186
- /** Called before deleting a submission. Return false to deny. */
187
- onBeforeSubmissionDeleted?: (submissionId: string, ctx: FormBuilderHookContext) => Promise<boolean> | boolean;
182
+ /** Called before listing submissions. Throw an error to deny access (403). */
183
+ onBeforeListSubmissions?: (formId: string, ctx: FormBuilderHookContext) => Promise<void> | void;
184
+ /** Called before getting a submission. Throw an error to deny access. */
185
+ onBeforeGetSubmission?: (submissionId: string, ctx: FormBuilderHookContext) => Promise<void> | void;
186
+ /** Called before deleting a submission. Throw an error to deny. */
187
+ onBeforeSubmissionDeleted?: (submissionId: string, ctx: FormBuilderHookContext) => Promise<void> | void;
188
188
  /** Called after a submission is deleted */
189
189
  onAfterSubmissionDeleted?: (submissionId: string, ctx: FormBuilderHookContext) => Promise<void> | void;
190
190
  /** Called on any error */
@@ -146,32 +146,32 @@ interface FormUpdate {
146
146
  * Backend hooks for Form Builder plugin
147
147
  *
148
148
  * All CRUD hooks receive ipAddress and headers for auth/rate limiting.
149
- * Return false from onBefore* hooks to reject the operation (throws 403).
149
+ * Throw an error from onBefore* hooks to reject the operation (throws 403).
150
150
  */
151
151
  interface FormBuilderBackendHooks {
152
- /** Called before listing forms. Return false to deny access (403). */
153
- onBeforeListForms?: (ctx: FormBuilderHookContext) => Promise<boolean> | boolean;
154
- /** Called before creating a form. Return false to deny, or modified data. */
155
- onBeforeFormCreated?: (data: FormInput, ctx: FormBuilderHookContext) => Promise<FormInput | false> | FormInput | false;
152
+ /** Called before listing forms. Throw an error to deny access (403). */
153
+ onBeforeListForms?: (ctx: FormBuilderHookContext) => Promise<void> | void;
154
+ /** Called before creating a form. Throw an error to deny, or return modified data. */
155
+ onBeforeFormCreated?: (data: FormInput, ctx: FormBuilderHookContext) => Promise<FormInput | void> | FormInput | void;
156
156
  /** Called after a form is created */
157
157
  onAfterFormCreated?: (form: SerializedForm, ctx: FormBuilderHookContext) => Promise<void> | void;
158
- /** Called before getting a form by ID or slug. Return false to deny access. */
159
- onBeforeGetForm?: (idOrSlug: string, ctx: FormBuilderHookContext) => Promise<boolean> | boolean;
160
- /** Called before updating a form. Return false to deny, or modified data. */
161
- onBeforeFormUpdated?: (id: string, data: FormUpdate, ctx: FormBuilderHookContext) => Promise<FormUpdate | false> | FormUpdate | false;
158
+ /** Called before getting a form by ID or slug. Throw an error to deny access. */
159
+ onBeforeGetForm?: (idOrSlug: string, ctx: FormBuilderHookContext) => Promise<void> | void;
160
+ /** Called before updating a form. Throw an error to deny, or return modified data. */
161
+ onBeforeFormUpdated?: (id: string, data: FormUpdate, ctx: FormBuilderHookContext) => Promise<FormUpdate | void> | FormUpdate | void;
162
162
  /** Called after a form is updated */
163
163
  onAfterFormUpdated?: (form: SerializedForm, ctx: FormBuilderHookContext) => Promise<void> | void;
164
- /** Called before deleting a form. Return false to deny. */
165
- onBeforeFormDeleted?: (id: string, ctx: FormBuilderHookContext) => Promise<boolean> | boolean;
164
+ /** Called before deleting a form. Throw an error to deny. */
165
+ onBeforeFormDeleted?: (id: string, ctx: FormBuilderHookContext) => Promise<void> | void;
166
166
  /** Called after a form is deleted */
167
167
  onAfterFormDeleted?: (id: string, ctx: FormBuilderHookContext) => Promise<void> | void;
168
168
  /**
169
169
  * Called before processing a form submission.
170
170
  * Use for: spam protection, rate limiting, data validation/enrichment.
171
171
  *
172
- * @returns false to reject submission (400), or modified data to continue
172
+ * Throw an error to reject submission (400), or return modified data to continue.
173
173
  */
174
- onBeforeSubmission?: (formSlug: string, data: Record<string, unknown>, ctx: SubmissionHookContext) => Promise<Record<string, unknown> | false> | Record<string, unknown> | false;
174
+ onBeforeSubmission?: (formSlug: string, data: Record<string, unknown>, ctx: SubmissionHookContext) => Promise<Record<string, unknown> | void> | Record<string, unknown> | void;
175
175
  /**
176
176
  * Called after a submission is saved.
177
177
  * Use for: sending emails, storing in CRM, triggering workflows.
@@ -179,12 +179,12 @@ interface FormBuilderBackendHooks {
179
179
  onAfterSubmission?: (submission: SerializedFormSubmission, form: SerializedForm, ctx: SubmissionHookContext) => Promise<void> | void;
180
180
  /** Called when a submission fails */
181
181
  onSubmissionError?: (error: Error, formSlug: string, data: Record<string, unknown>, ctx: SubmissionHookContext) => Promise<void> | void;
182
- /** Called before listing submissions. Return false to deny access (403). */
183
- onBeforeListSubmissions?: (formId: string, ctx: FormBuilderHookContext) => Promise<boolean> | boolean;
184
- /** Called before getting a submission. Return false to deny access. */
185
- onBeforeGetSubmission?: (submissionId: string, ctx: FormBuilderHookContext) => Promise<boolean> | boolean;
186
- /** Called before deleting a submission. Return false to deny. */
187
- onBeforeSubmissionDeleted?: (submissionId: string, ctx: FormBuilderHookContext) => Promise<boolean> | boolean;
182
+ /** Called before listing submissions. Throw an error to deny access (403). */
183
+ onBeforeListSubmissions?: (formId: string, ctx: FormBuilderHookContext) => Promise<void> | void;
184
+ /** Called before getting a submission. Throw an error to deny access. */
185
+ onBeforeGetSubmission?: (submissionId: string, ctx: FormBuilderHookContext) => Promise<void> | void;
186
+ /** Called before deleting a submission. Throw an error to deny. */
187
+ onBeforeSubmissionDeleted?: (submissionId: string, ctx: FormBuilderHookContext) => Promise<void> | void;
188
188
  /** Called after a submission is deleted */
189
189
  onAfterSubmissionDeleted?: (submissionId: string, ctx: FormBuilderHookContext) => Promise<void> | void;
190
190
  /** Called on any error */
@@ -1,5 +1,5 @@
1
1
  import * as _btst_stack_plugins_api from '@btst/stack/plugins/api';
2
- import { a as SerializedContentItemWithType, S as SerializedContentType, b as ContentType, c as ContentItem, d as SerializedContentItem, e as ContentItemWithType, f as CMSBackendConfig, I as InverseRelation } from './stack.CVDTkMoO.cjs';
2
+ import { a as SerializedContentItemWithType, S as SerializedContentType, b as ContentType, c as ContentItem, d as SerializedContentItem, e as ContentItemWithType, f as CMSBackendConfig, I as InverseRelation } from './stack.B8QD11QU.cjs';
3
3
  import * as better_call from 'better-call';
4
4
  import { z } from 'zod';
5
5
  import { Adapter } from '@btst/db';
@@ -1,6 +1,6 @@
1
1
  import * as _btst_stack_plugins_api from '@btst/stack/plugins/api';
2
2
  import * as better_call from 'better-call';
3
- import { S as SerializedForm, b as SerializedFormSubmissionWithData, F as Form, d as FormSubmission, a as SerializedFormSubmission, e as FormSubmissionWithForm, f as FormBuilderBackendConfig } from './stack.DdI5W6MB.js';
3
+ import { S as SerializedForm, b as SerializedFormSubmissionWithData, F as Form, d as FormSubmission, a as SerializedFormSubmission, e as FormSubmissionWithForm, f as FormBuilderBackendConfig } from './stack.BozPgbrZ.js';
4
4
  import { z } from 'zod';
5
5
  import { Adapter } from '@btst/db';
6
6
  import { QueryClient } from '@tanstack/react-query';
@@ -1,6 +1,6 @@
1
1
  import * as _btst_stack_plugins_api from '@btst/stack/plugins/api';
2
2
  import * as better_call from 'better-call';
3
- import { S as SerializedForm, b as SerializedFormSubmissionWithData, F as Form, d as FormSubmission, a as SerializedFormSubmission, e as FormSubmissionWithForm, f as FormBuilderBackendConfig } from './stack.DdI5W6MB.mjs';
3
+ import { S as SerializedForm, b as SerializedFormSubmissionWithData, F as Form, d as FormSubmission, a as SerializedFormSubmission, e as FormSubmissionWithForm, f as FormBuilderBackendConfig } from './stack.BozPgbrZ.cjs';
4
4
  import { z } from 'zod';
5
5
  import { Adapter } from '@btst/db';
6
6
  import { QueryClient } from '@tanstack/react-query';