@cosmicdrift/kumiko-bundled-features 0.369.0 → 0.371.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (609) hide show
  1. package/dist/account-security/constants.d.ts +4 -0
  2. package/dist/account-security/constants.js +5 -0
  3. package/dist/account-security/feature.d.ts +14 -0
  4. package/dist/account-security/feature.js +62 -0
  5. package/dist/account-security/i18n.d.ts +6 -0
  6. package/dist/account-security/i18n.js +6 -0
  7. package/dist/account-security/index.d.ts +3 -0
  8. package/dist/account-security/index.js +3 -0
  9. package/dist/admin-shell/feature.d.ts +1 -1
  10. package/dist/admin-shell/index.d.ts +4 -4
  11. package/dist/admin-shell/overview-panels.d.ts +1 -1
  12. package/dist/admin-shell/web/index.d.ts +1 -1
  13. package/dist/agent-tools/agent-manifest.d.ts +1 -1
  14. package/dist/agent-tools/index.d.ts +8 -8
  15. package/dist/agent-tools/manifest-deny-qns.d.ts +1 -1
  16. package/dist/agent-tools/tool-catalog.d.ts +1 -1
  17. package/dist/agent-tools/tool-dispatch.d.ts +1 -1
  18. package/dist/audit/handlers/resolve-audit-tenant.d.ts +1 -1
  19. package/dist/audit/index.d.ts +3 -3
  20. package/dist/audit/web/index.d.ts +1 -1
  21. package/dist/auth-email-password/bootstrap.d.ts +1 -1
  22. package/dist/auth-email-password/feature.d.ts +7 -6
  23. package/dist/auth-email-password/feature.js +3 -1
  24. package/dist/auth-email-password/handlers/confirm-token-flow.d.ts +1 -1
  25. package/dist/auth-email-password/handlers/invite-accept-with-login.write.d.ts +1 -1
  26. package/dist/auth-email-password/handlers/invite-create.write.d.ts +2 -2
  27. package/dist/auth-email-password/handlers/invite-signup-complete.write.d.ts +1 -1
  28. package/dist/auth-email-password/handlers/login.write.d.ts +1 -1
  29. package/dist/auth-email-password/handlers/request-account-unlock.write.d.ts +1 -1
  30. package/dist/auth-email-password/handlers/request-email-verification.write.d.ts +1 -1
  31. package/dist/auth-email-password/handlers/request-password-reset.write.d.ts +1 -1
  32. package/dist/auth-email-password/handlers/signup-confirm.write.d.ts +1 -1
  33. package/dist/auth-email-password/handlers/signup-request.write.d.ts +1 -1
  34. package/dist/auth-email-password/handlers/switch-tenant-mfa-gate.write.d.ts +1 -1
  35. package/dist/auth-email-password/handlers/token-request-handler.d.ts +2 -2
  36. package/dist/auth-email-password/index.d.ts +13 -13
  37. package/dist/auth-email-password/lockout-store.d.ts +1 -1
  38. package/dist/auth-email-password/magic-link-mail.d.ts +1 -1
  39. package/dist/auth-email-password/seeding.d.ts +3 -3
  40. package/dist/auth-email-password/signed-token.d.ts +1 -1
  41. package/dist/auth-email-password/signup-token-store.d.ts +1 -1
  42. package/dist/auth-email-password/testing.d.ts +1 -1
  43. package/dist/auth-email-password/web/auth-gate.d.ts +1 -1
  44. package/dist/auth-email-password/web/client-plugin.d.ts +2 -2
  45. package/dist/auth-email-password/web/index.d.ts +42 -42
  46. package/dist/auth-email-password/web/session-bootstrap-error.d.ts +1 -1
  47. package/dist/auth-email-password/web/session.d.ts +1 -1
  48. package/dist/auth-email-password/web/signup-complete-screen.d.ts +1 -1
  49. package/dist/auth-foundation/feature.d.ts +2 -6
  50. package/dist/auth-foundation/feature.js +0 -2
  51. package/dist/auth-foundation/index.d.ts +3 -3
  52. package/dist/auth-foundation/index.js +1 -1
  53. package/dist/auth-foundation/resolve-anonymous-access.d.ts +2 -1
  54. package/dist/auth-foundation/resolve-anonymous-access.js +9 -1
  55. package/dist/auth-mfa/env.d.ts +13 -0
  56. package/dist/auth-mfa/env.js +24 -0
  57. package/dist/auth-mfa/errors.d.ts +1 -1
  58. package/dist/auth-mfa/feature-exports.d.ts +12 -0
  59. package/dist/auth-mfa/feature-exports.js +72 -0
  60. package/dist/auth-mfa/feature.d.ts +6 -12
  61. package/dist/auth-mfa/feature.js +53 -70
  62. package/dist/auth-mfa/handlers/reencrypt.job.d.ts +1 -1
  63. package/dist/auth-mfa/index.d.ts +12 -9
  64. package/dist/auth-mfa/index.js +4 -2
  65. package/dist/auth-mfa/mfa-challenge-token.d.ts +1 -1
  66. package/dist/auth-mfa/mfa-preauth-setup-token.d.ts +1 -1
  67. package/dist/auth-mfa/mfa-status-checker.d.ts +1 -1
  68. package/dist/auth-mfa/mfa-verify-attempts.d.ts +1 -1
  69. package/dist/auth-mfa/testing.d.ts +1 -1
  70. package/dist/auth-mfa/token-secrets.d.ts +7 -0
  71. package/dist/auth-mfa/token-secrets.js +13 -0
  72. package/dist/auth-mfa/verify-factor.d.ts +1 -1
  73. package/dist/auth-mfa/web/index.d.ts +15 -15
  74. package/dist/auth-mfa/web/mfa-client.d.ts +1 -1
  75. package/dist/auth-mfa-user-data/index.d.ts +0 -4
  76. package/dist/auth-mfa-user-data/index.js +0 -2
  77. package/dist/billing-foundation/checkout-core.d.ts +2 -2
  78. package/dist/billing-foundation/consumer-protection/confirmation-mail.d.ts +2 -2
  79. package/dist/billing-foundation/consumer-protection/consent-gate.d.ts +1 -1
  80. package/dist/billing-foundation/consumer-protection/consent-text.d.ts +2 -2
  81. package/dist/billing-foundation/consumer-protection/issue-confirmation.d.ts +1 -1
  82. package/dist/billing-foundation/consumer-protection/register-consent.d.ts +1 -1
  83. package/dist/billing-foundation/consumer-protection/register-termination.d.ts +1 -1
  84. package/dist/billing-foundation/consumer-protection/termination-mail.d.ts +3 -3
  85. package/dist/billing-foundation/consumer-protection/termination-notify.d.ts +5 -5
  86. package/dist/billing-foundation/consumer-protection/termination-pages.d.ts +2 -2
  87. package/dist/billing-foundation/consumer-protection/termination-record.d.ts +3 -3
  88. package/dist/billing-foundation/consumer-protection/termination-request.d.ts +2 -2
  89. package/dist/billing-foundation/consumer-protection/termination-texts.d.ts +2 -2
  90. package/dist/billing-foundation/feature.d.ts +1 -3
  91. package/dist/billing-foundation/feature.js +0 -2
  92. package/dist/billing-foundation/handlers/billing-plans.query.d.ts +1 -1
  93. package/dist/billing-foundation/handlers/create-checkout-session.write.d.ts +1 -1
  94. package/dist/billing-foundation/handlers/create-portal-session.write.d.ts +1 -1
  95. package/dist/billing-foundation/handlers/start-plan-checkout.write.d.ts +1 -1
  96. package/dist/billing-foundation/handlers/switch-plan.write.d.ts +1 -1
  97. package/dist/billing-foundation/index.d.ts +16 -16
  98. package/dist/billing-foundation/index.js +1 -1
  99. package/dist/billing-foundation/plan-catalog.d.ts +1 -1
  100. package/dist/billing-foundation/subscription-tier-sync.d.ts +24 -5
  101. package/dist/billing-foundation/subscription-tier-sync.js +48 -19
  102. package/dist/billing-foundation/types.d.ts +3 -3
  103. package/dist/billing-foundation/validate-options.d.ts +1 -1
  104. package/dist/billing-foundation/web/checkout-consent-dialog.d.ts +1 -1
  105. package/dist/billing-foundation/web/index.d.ts +6 -6
  106. package/dist/billing-foundation/webhook-handler.d.ts +2 -1
  107. package/dist/billing-foundation/webhook-handler.js +2 -2
  108. package/dist/cap-counter/calendar-cap-usage-reservation.d.ts +4 -4
  109. package/dist/cap-counter/cap-reservation.d.ts +1 -1
  110. package/dist/cap-counter/enforce-cap.d.ts +1 -1
  111. package/dist/cap-counter/feature.d.ts +0 -4
  112. package/dist/cap-counter/feature.js +0 -2
  113. package/dist/cap-counter/index.d.ts +13 -13
  114. package/dist/cap-counter/index.js +1 -1
  115. package/dist/cap-counter/value-cap-guard.d.ts +1 -1
  116. package/dist/cap-counter/with-cap-enforcement.d.ts +1 -1
  117. package/dist/cap-overview/feature.d.ts +1 -1
  118. package/dist/cap-overview/handlers/caps-usage.query.d.ts +1 -1
  119. package/dist/cap-overview/handlers/tenant-caps-list.query.d.ts +1 -1
  120. package/dist/cap-overview/index.d.ts +6 -6
  121. package/dist/cap-overview/screens.d.ts +1 -1
  122. package/dist/cap-overview/types.d.ts +1 -1
  123. package/dist/cap-overview/usage-math.d.ts +1 -1
  124. package/dist/cap-overview/web/cap-usage-bar.d.ts +1 -1
  125. package/dist/cap-overview/web/index.d.ts +4 -4
  126. package/dist/channel-discord/discord-channel.d.ts +1 -1
  127. package/dist/channel-discord/feature.d.ts +1 -1
  128. package/dist/channel-discord/index.d.ts +2 -2
  129. package/dist/channel-email/email-channel.d.ts +2 -2
  130. package/dist/channel-email/env.d.ts +14 -0
  131. package/dist/channel-email/env.js +27 -0
  132. package/dist/channel-email/feature.d.ts +14 -3
  133. package/dist/channel-email/feature.js +5 -1
  134. package/dist/channel-email/index.d.ts +6 -5
  135. package/dist/channel-email/index.js +1 -0
  136. package/dist/channel-email/pii-guard.d.ts +1 -1
  137. package/dist/channel-email/smtp-transport.d.ts +1 -1
  138. package/dist/channel-email/types.d.ts +1 -1
  139. package/dist/channel-in-app/in-app-channel.d.ts +1 -1
  140. package/dist/channel-in-app/index.d.ts +4 -4
  141. package/dist/channel-push/feature.d.ts +1 -1
  142. package/dist/channel-push/index.d.ts +3 -3
  143. package/dist/channel-push/push-channel.d.ts +2 -2
  144. package/dist/channel-slack/feature.d.ts +1 -1
  145. package/dist/channel-slack/index.d.ts +2 -2
  146. package/dist/channel-slack/slack-channel.d.ts +1 -1
  147. package/dist/channel-teams/feature.d.ts +1 -1
  148. package/dist/channel-teams/index.d.ts +2 -2
  149. package/dist/channel-teams/teams-channel.d.ts +1 -1
  150. package/dist/channel-telegram/feature.d.ts +1 -1
  151. package/dist/channel-telegram/index.d.ts +2 -2
  152. package/dist/channel-telegram/telegram-channel.d.ts +1 -1
  153. package/dist/compliance-profiles/feature.d.ts +1 -1
  154. package/dist/compliance-profiles/index.d.ts +3 -3
  155. package/dist/compliance-profiles/web/index.d.ts +2 -2
  156. package/dist/compliance-profiles-ops/index.d.ts +0 -8
  157. package/dist/compliance-profiles-ops/index.js +0 -2
  158. package/dist/config/feature.d.ts +1 -1
  159. package/dist/config/handlers/reencrypt.job.d.ts +1 -1
  160. package/dist/config/index.d.ts +8 -8
  161. package/dist/config/web/client-plugin.d.ts +1 -1
  162. package/dist/config/web/index.d.ts +2 -2
  163. package/dist/crypto-shredding/env/index.d.ts +21 -0
  164. package/dist/crypto-shredding/env/index.js +78 -0
  165. package/dist/crypto-shredding/feature.d.ts +17 -2
  166. package/dist/crypto-shredding/feature.js +5 -1
  167. package/dist/crypto-shredding/index.d.ts +4 -3
  168. package/dist/crypto-shredding/index.js +1 -0
  169. package/dist/custom-fields/feature.d.ts +0 -17
  170. package/dist/custom-fields/feature.js +0 -2
  171. package/dist/custom-fields/index.d.ts +10 -10
  172. package/dist/custom-fields/index.js +1 -1
  173. package/dist/custom-fields/lib/define-or-resurrect.d.ts +2 -2
  174. package/dist/custom-fields/lib/field-access.d.ts +1 -1
  175. package/dist/custom-fields/lib/field-definition-row.d.ts +1 -1
  176. package/dist/custom-fields/lib/quota.d.ts +1 -1
  177. package/dist/custom-fields/web/index.d.ts +3 -3
  178. package/dist/data-retention/_internal/parse-override.d.ts +1 -1
  179. package/dist/data-retention/feature.d.ts +7 -7
  180. package/dist/data-retention/handlers/policy-for.query.d.ts +1 -1
  181. package/dist/data-retention/index.d.ts +3 -3
  182. package/dist/data-retention/resolve-for-tenant.d.ts +2 -2
  183. package/dist/data-retention/resolve-tenant-preset.d.ts +1 -1
  184. package/dist/data-retention/resolver.d.ts +1 -1
  185. package/dist/data-retention/run-retention-cleanup.d.ts +2 -2
  186. package/dist/delivery/attachment-ref.d.ts +1 -1
  187. package/dist/delivery/attempt-log.d.ts +1 -1
  188. package/dist/delivery/channel-context.d.ts +2 -2
  189. package/dist/delivery/chat-webhook-channel.d.ts +2 -2
  190. package/dist/delivery/constants.d.ts +1 -1
  191. package/dist/delivery/delivery-service.d.ts +2 -2
  192. package/dist/delivery/feature.js +2 -0
  193. package/dist/delivery/handlers/log.query.d.ts +1 -1
  194. package/dist/delivery/handlers/unsubscribe-page-chrome.query.d.ts +5 -0
  195. package/dist/delivery/handlers/unsubscribe-page-chrome.query.js +44 -0
  196. package/dist/delivery/index.d.ts +20 -20
  197. package/dist/delivery/notify-factory.d.ts +1 -1
  198. package/dist/delivery/public-names.d.ts +1 -0
  199. package/dist/delivery/public-names.js +1 -0
  200. package/dist/delivery/testing.d.ts +3 -3
  201. package/dist/delivery/types.d.ts +3 -3
  202. package/dist/delivery/unsubscribe-link.d.ts +1 -1
  203. package/dist/delivery/unsubscribe-page-strings.d.ts +4 -0
  204. package/dist/delivery/unsubscribe-page-strings.js +4 -0
  205. package/dist/delivery/unsubscribe-page.d.ts +27 -0
  206. package/dist/delivery/unsubscribe-page.js +192 -0
  207. package/dist/delivery/unsubscribe.d.ts +11 -3
  208. package/dist/delivery/unsubscribe.js +146 -64
  209. package/dist/delivery/web/index.d.ts +2 -2
  210. package/dist/derivatives-sharp/feature.d.ts +0 -4
  211. package/dist/derivatives-sharp/feature.js +0 -2
  212. package/dist/derivatives-sharp/index.d.ts +2 -2
  213. package/dist/derivatives-sharp/index.js +1 -1
  214. package/dist/document-ingest-foundation/feature.d.ts +0 -7
  215. package/dist/document-ingest-foundation/feature.js +0 -2
  216. package/dist/document-ingest-foundation/index.d.ts +7 -7
  217. package/dist/document-ingest-foundation/index.js +1 -1
  218. package/dist/document-ingest-foundation/pages.d.ts +1 -1
  219. package/dist/document-ingest-foundation/providers.d.ts +1 -1
  220. package/dist/document-ingest-foundation/write-document-extract.d.ts +1 -1
  221. package/dist/feature-toggles/compose-tier-resolver.d.ts +1 -1
  222. package/dist/feature-toggles/feature.d.ts +5 -5
  223. package/dist/feature-toggles/handlers/set.write.d.ts +1 -1
  224. package/dist/feature-toggles/index.d.ts +3 -3
  225. package/dist/feature-toggles/toggle-sync-signal.d.ts +1 -1
  226. package/dist/feature-toggles/web/index.d.ts +1 -1
  227. package/dist/file-derivatives/feature.d.ts +0 -2
  228. package/dist/file-derivatives/feature.js +0 -2
  229. package/dist/file-derivatives/index.d.ts +4 -4
  230. package/dist/file-derivatives/index.js +1 -1
  231. package/dist/file-foundation/feature.d.ts +0 -6
  232. package/dist/file-foundation/feature.js +0 -2
  233. package/dist/file-foundation/index.d.ts +2 -2
  234. package/dist/file-foundation/index.js +1 -1
  235. package/dist/file-provider-inmemory/feature.d.ts +0 -4
  236. package/dist/file-provider-inmemory/feature.js +0 -2
  237. package/dist/file-provider-inmemory/index.d.ts +1 -1
  238. package/dist/file-provider-inmemory/index.js +1 -1
  239. package/dist/file-provider-s3/env-feature.d.ts +12 -2
  240. package/dist/file-provider-s3/env-feature.js +9 -6
  241. package/dist/file-provider-s3/env-schema.d.ts +38 -0
  242. package/dist/file-provider-s3/env-schema.js +54 -0
  243. package/dist/file-provider-s3/feature.d.ts +1 -14
  244. package/dist/file-provider-s3/feature.js +0 -2
  245. package/dist/file-provider-s3/index.d.ts +2 -1
  246. package/dist/file-provider-s3/index.js +2 -1
  247. package/dist/file-provider-s3/lib/env-helper.d.ts +1 -1
  248. package/dist/file-provider-s3/lib/index.d.ts +3 -3
  249. package/dist/files/index.d.ts +1 -1
  250. package/dist/files-tenant-data/index.d.ts +2 -2
  251. package/dist/folders/feature.d.ts +0 -4
  252. package/dist/folders/feature.js +0 -2
  253. package/dist/folders/index.d.ts +7 -7
  254. package/dist/folders/index.js +1 -1
  255. package/dist/folders/web/folder-manager.d.ts +1 -1
  256. package/dist/folders/web/index.d.ts +5 -5
  257. package/dist/folders-user-data/index.d.ts +0 -4
  258. package/dist/folders-user-data/index.js +0 -2
  259. package/dist/form-draft/db/queries/cleanup.d.ts +1 -1
  260. package/dist/form-draft/feature.d.ts +0 -4
  261. package/dist/form-draft/feature.js +0 -2
  262. package/dist/form-draft/handlers/cleanup.job.d.ts +1 -1
  263. package/dist/form-draft/handlers/get.query.d.ts +1 -1
  264. package/dist/form-draft/index.d.ts +10 -10
  265. package/dist/form-draft/index.js +1 -1
  266. package/dist/form-draft/lookup.d.ts +1 -1
  267. package/dist/form-draft/release-file-refs.d.ts +1 -1
  268. package/dist/form-draft-user-data/index.d.ts +0 -4
  269. package/dist/form-draft-user-data/index.js +0 -2
  270. package/dist/foundation-shared/build-info-env.d.ts +7 -0
  271. package/dist/foundation-shared/build-info-env.js +15 -0
  272. package/dist/foundation-shared/demo-admin-env.d.ts +12 -0
  273. package/dist/foundation-shared/demo-admin-env.js +21 -0
  274. package/dist/foundation-shared/index.d.ts +5 -3
  275. package/dist/foundation-shared/index.js +2 -0
  276. package/dist/host-routing/constants.d.ts +8 -0
  277. package/dist/host-routing/constants.js +19 -0
  278. package/dist/host-routing/dispatch.d.ts +24 -0
  279. package/dist/host-routing/dispatch.js +102 -0
  280. package/dist/host-routing/feature.d.ts +3 -0
  281. package/dist/host-routing/feature.js +102 -0
  282. package/dist/host-routing/host.d.ts +14 -0
  283. package/dist/host-routing/host.js +37 -0
  284. package/dist/host-routing/index.d.ts +5 -0
  285. package/dist/host-routing/index.js +4 -0
  286. package/dist/host-routing/options.d.ts +27 -0
  287. package/dist/host-routing/options.js +1 -0
  288. package/dist/host-routing/validate-options.d.ts +2 -0
  289. package/dist/host-routing/validate-options.js +29 -0
  290. package/dist/inbound-mail-foundation/connect-routes.d.ts +2 -2
  291. package/dist/inbound-mail-foundation/feature.d.ts +0 -4
  292. package/dist/inbound-mail-foundation/feature.js +0 -2
  293. package/dist/inbound-mail-foundation/handlers/account-state.d.ts +1 -1
  294. package/dist/inbound-mail-foundation/index.d.ts +12 -12
  295. package/dist/inbound-mail-foundation/index.js +1 -1
  296. package/dist/inbound-mail-foundation/oauth-access-token.d.ts +1 -1
  297. package/dist/inbound-mail-foundation/provider-factory.d.ts +1 -1
  298. package/dist/inbound-mail-foundation/types.d.ts +1 -1
  299. package/dist/inbound-mail-foundation/watch-supervisor.d.ts +2 -2
  300. package/dist/inbound-provider-imap/feature.d.ts +1 -5
  301. package/dist/inbound-provider-imap/feature.js +0 -2
  302. package/dist/inbound-provider-imap/imap-client.d.ts +1 -1
  303. package/dist/inbound-provider-imap/index.d.ts +3 -3
  304. package/dist/inbound-provider-imap/index.js +1 -1
  305. package/dist/inbound-provider-inmemory/feature.d.ts +0 -4
  306. package/dist/inbound-provider-inmemory/feature.js +0 -2
  307. package/dist/inbound-provider-inmemory/index.d.ts +1 -1
  308. package/dist/inbound-provider-inmemory/index.js +1 -1
  309. package/dist/jobs/handlers/tenant-runs.query.d.ts +1 -1
  310. package/dist/jobs/index.d.ts +9 -9
  311. package/dist/jobs/web/index.d.ts +1 -1
  312. package/dist/ledger/feature.d.ts +0 -4
  313. package/dist/ledger/feature.js +0 -2
  314. package/dist/ledger/index.d.ts +10 -10
  315. package/dist/ledger/index.js +1 -1
  316. package/dist/ledger/recurring.d.ts +2 -2
  317. package/dist/ledger/reports.d.ts +2 -2
  318. package/dist/ledger/web/index.d.ts +3 -3
  319. package/dist/legal-pages/constants.d.ts +12 -0
  320. package/dist/legal-pages/constants.js +16 -0
  321. package/dist/legal-pages/feature.d.ts +6 -3
  322. package/dist/legal-pages/feature.js +5 -2
  323. package/dist/legal-pages/index.d.ts +5 -3
  324. package/dist/legal-pages/index.js +3 -1
  325. package/dist/legal-pages/layout.d.ts +10 -0
  326. package/dist/legal-pages/layout.js +32 -0
  327. package/dist/legal-pages/lib/boot-check.d.ts +1 -1
  328. package/dist/legal-pages/lib/validate-routes.d.ts +1 -1
  329. package/dist/legal-pages/markdown.d.ts +2 -2
  330. package/dist/legal-pages/seed.d.ts +12 -0
  331. package/dist/legal-pages/seed.js +38 -0
  332. package/dist/legal-pages/web/index.d.ts +1 -1
  333. package/dist/mail-foundation/feature.d.ts +0 -7
  334. package/dist/mail-foundation/feature.js +0 -2
  335. package/dist/mail-foundation/index.d.ts +1 -1
  336. package/dist/mail-foundation/index.js +1 -1
  337. package/dist/mail-transport-inmemory/feature.d.ts +0 -4
  338. package/dist/mail-transport-inmemory/feature.js +0 -2
  339. package/dist/mail-transport-inmemory/index.d.ts +1 -1
  340. package/dist/mail-transport-inmemory/index.js +1 -1
  341. package/dist/mail-transport-smtp/feature.d.ts +0 -16
  342. package/dist/mail-transport-smtp/feature.js +0 -2
  343. package/dist/mail-transport-smtp/index.d.ts +1 -1
  344. package/dist/mail-transport-smtp/index.js +1 -1
  345. package/dist/managed-pages/branding.d.ts +1 -1
  346. package/dist/managed-pages/feature.d.ts +1 -1
  347. package/dist/managed-pages/handlers/branding.query.d.ts +1 -1
  348. package/dist/managed-pages/index.d.ts +5 -5
  349. package/dist/managed-pages/web/index.d.ts +2 -2
  350. package/dist/metrics/compute.d.ts +2 -2
  351. package/dist/metrics/default-metrics.d.ts +9 -9
  352. package/dist/metrics/feature.d.ts +1 -1
  353. package/dist/metrics/filters.d.ts +1 -1
  354. package/dist/metrics/index.d.ts +5 -5
  355. package/dist/metrics/types.d.ts +1 -1
  356. package/dist/metrics/validate.d.ts +1 -1
  357. package/dist/metrics/window.d.ts +2 -2
  358. package/dist/notes-history/feature.d.ts +0 -4
  359. package/dist/notes-history/feature.js +0 -2
  360. package/dist/notes-history/handlers/add-note.write.d.ts +1 -1
  361. package/dist/notes-history/index.d.ts +6 -6
  362. package/dist/notes-history/index.js +1 -1
  363. package/dist/notes-history/web/index.d.ts +3 -3
  364. package/dist/notes-history-user-data/index.d.ts +1 -5
  365. package/dist/notes-history-user-data/index.js +0 -2
  366. package/dist/page-render/index.d.ts +7 -7
  367. package/dist/page-render/layout.d.ts +1 -1
  368. package/dist/page-render/web.d.ts +5 -5
  369. package/dist/personal-access-tokens/feature.d.ts +3 -3
  370. package/dist/personal-access-tokens/handlers/available-scopes.query.d.ts +1 -1
  371. package/dist/personal-access-tokens/i18n.d.ts +1 -1
  372. package/dist/personal-access-tokens/index.d.ts +13 -13
  373. package/dist/personal-access-tokens/resolver.d.ts +1 -1
  374. package/dist/personal-access-tokens/screens.d.ts +1 -1
  375. package/dist/presets/dsgvo-self-service.d.ts +3 -1
  376. package/dist/presets/dsgvo-self-service.js +2 -0
  377. package/dist/presets/index.d.ts +2 -2
  378. package/dist/presets/security-baseline.d.ts +2 -0
  379. package/dist/presets/security-baseline.js +2 -0
  380. package/dist/rate-limiting/index.d.ts +2 -2
  381. package/dist/readiness/feature.d.ts +0 -8
  382. package/dist/readiness/feature.js +0 -2
  383. package/dist/readiness/index.d.ts +3 -3
  384. package/dist/readiness/index.js +1 -1
  385. package/dist/renderer-foundation/api.d.ts +2 -2
  386. package/dist/renderer-foundation/constants.d.ts +2 -2
  387. package/dist/renderer-foundation/feature.d.ts +1 -1
  388. package/dist/renderer-foundation/index.d.ts +5 -5
  389. package/dist/renderer-foundation/types.d.ts +24 -2
  390. package/dist/renderer-pdf/feature.d.ts +1 -1
  391. package/dist/renderer-pdf/index.d.ts +2 -2
  392. package/dist/renderer-pdf/render-table-pdf.d.ts +1 -1
  393. package/dist/secrets/constants.d.ts +7 -0
  394. package/dist/secrets/constants.js +7 -0
  395. package/dist/secrets/db/queries/read.d.ts +1 -1
  396. package/dist/secrets/feature.d.ts +4 -3
  397. package/dist/secrets/feature.js +4 -2
  398. package/dist/secrets/handlers/delete.write.js +2 -2
  399. package/dist/secrets/handlers/rotate.job.d.ts +1 -1
  400. package/dist/secrets/handlers/set.write.js +2 -2
  401. package/dist/secrets/index.d.ts +7 -7
  402. package/dist/secrets/index.js +1 -1
  403. package/dist/secrets/secrets-context.d.ts +1 -1
  404. package/dist/seo/feature.d.ts +3 -3
  405. package/dist/seo/index.d.ts +6 -6
  406. package/dist/sessions/feature.d.ts +1 -1
  407. package/dist/sessions/index.d.ts +8 -8
  408. package/dist/sessions/session-callbacks.d.ts +1 -1
  409. package/dist/sessions/testing.d.ts +1 -1
  410. package/dist/shared/index.d.ts +31 -31
  411. package/dist/step-dispatcher/dispatch-payload.d.ts +2 -2
  412. package/dist/step-dispatcher/index.d.ts +3 -3
  413. package/dist/subscription-mollie/feature.d.ts +2 -2
  414. package/dist/subscription-mollie/index.d.ts +3 -3
  415. package/dist/subscription-mollie/verify-webhook.d.ts +1 -1
  416. package/dist/subscription-stripe/feature.d.ts +17 -1
  417. package/dist/subscription-stripe/feature.js +19 -1
  418. package/dist/subscription-stripe/index.d.ts +2 -2
  419. package/dist/subscription-stripe/index.js +1 -1
  420. package/dist/subscription-stripe/plugin-methods.d.ts +1 -1
  421. package/dist/subscription-stripe/verify-webhook.d.ts +1 -1
  422. package/dist/tags/feature.d.ts +0 -4
  423. package/dist/tags/feature.js +0 -2
  424. package/dist/tags/handlers/assign-tag.write.d.ts +1 -1
  425. package/dist/tags/handlers/remove-tag.write.d.ts +1 -1
  426. package/dist/tags/index.d.ts +11 -11
  427. package/dist/tags/index.js +1 -1
  428. package/dist/tags/web/index.d.ts +9 -9
  429. package/dist/template-resolver/api.d.ts +4 -4
  430. package/dist/template-resolver/constants.d.ts +1 -1
  431. package/dist/template-resolver/document-sanitizer.d.ts +1 -1
  432. package/dist/template-resolver/handlers/bundle-import.d.ts +3 -3
  433. package/dist/template-resolver/handlers/collection-shared.d.ts +2 -2
  434. package/dist/template-resolver/handlers/copy-locale.write.d.ts +1 -1
  435. package/dist/template-resolver/handlers/diff-to-system.query.d.ts +1 -1
  436. package/dist/template-resolver/handlers/find-by-id.query.d.ts +1 -1
  437. package/dist/template-resolver/handlers/import-bundle-system.write.d.ts +1 -1
  438. package/dist/template-resolver/handlers/import-bundle.write.d.ts +1 -1
  439. package/dist/template-resolver/handlers/layout-source.query.d.ts +3 -3
  440. package/dist/template-resolver/handlers/override-diff.d.ts +2 -2
  441. package/dist/template-resolver/handlers/overview.query.d.ts +3 -3
  442. package/dist/template-resolver/handlers/preview.query.d.ts +1 -1
  443. package/dist/template-resolver/handlers/resource-link-pdf.write.d.ts +1 -1
  444. package/dist/template-resolver/handlers/resource-upload.write.d.ts +1 -1
  445. package/dist/template-resolver/handlers/send-test.write.d.ts +1 -1
  446. package/dist/template-resolver/handlers/shared.d.ts +1 -1
  447. package/dist/template-resolver/handlers/template-gates.d.ts +4 -4
  448. package/dist/template-resolver/handlers/template-write.d.ts +4 -4
  449. package/dist/template-resolver/handlers/tenant-overrides.query.d.ts +1 -1
  450. package/dist/template-resolver/handlers/toggle-status.write.d.ts +1 -1
  451. package/dist/template-resolver/handlers/upsert-system.write.d.ts +1 -1
  452. package/dist/template-resolver/handlers/upsert-tenant.write.d.ts +1 -1
  453. package/dist/template-resolver/handlers/usage.query.d.ts +1 -1
  454. package/dist/template-resolver/handlers/validate.query.d.ts +3 -3
  455. package/dist/template-resolver/index.d.ts +25 -25
  456. package/dist/template-resolver/layout-appearance.d.ts +1 -1
  457. package/dist/template-resolver/layout-regions.d.ts +2 -2
  458. package/dist/template-resolver/linked-resources.d.ts +1 -1
  459. package/dist/template-resolver/preview-display-html.d.ts +1 -1
  460. package/dist/template-resolver/resource-image.d.ts +1 -1
  461. package/dist/template-resolver/seeding.d.ts +2 -2
  462. package/dist/template-resolver/store-template-resource.d.ts +1 -1
  463. package/dist/template-resolver/template-draft.d.ts +2 -2
  464. package/dist/template-resolver/template-meta.d.ts +2 -2
  465. package/dist/template-resolver/template-preview.d.ts +7 -6
  466. package/dist/template-resolver/template-preview.js +19 -12
  467. package/dist/template-resolver/template-resources.d.ts +1 -1
  468. package/dist/template-resolver/template-usage.d.ts +3 -1
  469. package/dist/template-resolver/template-usage.js +1 -0
  470. package/dist/template-resolver/template-validation.d.ts +1 -1
  471. package/dist/template-resolver/testing.d.ts +1 -1
  472. package/dist/template-resolver/user-content-table.d.ts +1 -1
  473. package/dist/template-resolver/web/document-editor-extensions.d.ts +1 -1
  474. package/dist/template-resolver/web/document-editor-extensions.js +6 -2
  475. package/dist/template-resolver/web/document-editor.d.ts +1 -1
  476. package/dist/template-resolver/web/document-tiptap-editor.d.ts +1 -1
  477. package/dist/template-resolver/web/document-tiptap-editor.js +13 -10
  478. package/dist/template-resolver/web/editor-handle.d.ts +1 -1
  479. package/dist/template-resolver/web/index.d.ts +7 -7
  480. package/dist/template-resolver/web/placeholder-line-editor-lazy.d.ts +2 -2
  481. package/dist/template-resolver/web/placeholder-line-editor.d.ts +1 -1
  482. package/dist/template-resolver-user-data/index.d.ts +0 -4
  483. package/dist/template-resolver-user-data/index.js +0 -2
  484. package/dist/tenant/feature.d.ts +1 -1
  485. package/dist/tenant/index.d.ts +10 -10
  486. package/dist/tenant/is-tenant-serving-public-content.d.ts +1 -1
  487. package/dist/tenant/testing.d.ts +1 -1
  488. package/dist/tenant/web/index.d.ts +3 -3
  489. package/dist/tenant-handover/feature.d.ts +1 -1
  490. package/dist/tenant-handover/index.d.ts +3 -3
  491. package/dist/tenant-handover/signup-handover-provider.d.ts +1 -1
  492. package/dist/tenant-lifecycle/feature.d.ts +2 -2
  493. package/dist/tenant-lifecycle/index.d.ts +3 -3
  494. package/dist/tenant-lifecycle/run-tenant-destroy.d.ts +1 -1
  495. package/dist/tenant-lifecycle/stages.d.ts +1 -1
  496. package/dist/tenant-lifecycle/testing.d.ts +1 -1
  497. package/dist/tenant-settings/feature.d.ts +1 -3
  498. package/dist/tenant-settings/feature.js +0 -2
  499. package/dist/tenant-settings/index.d.ts +4 -4
  500. package/dist/tenant-settings/index.js +1 -1
  501. package/dist/tier-engine/entity.d.ts +1 -1
  502. package/dist/tier-engine/feature.d.ts +2 -4
  503. package/dist/tier-engine/feature.js +0 -2
  504. package/dist/tier-engine/handlers/get-tenant-tier.query.d.ts +1 -1
  505. package/dist/tier-engine/i18n.d.ts +0 -2
  506. package/dist/tier-engine/i18n.js +4 -4
  507. package/dist/tier-engine/index.d.ts +8 -8
  508. package/dist/tier-engine/index.js +1 -1
  509. package/dist/tier-engine/tier-option-gate.d.ts +1 -1
  510. package/dist/tier-engine/tier-resolver.d.ts +1 -1
  511. package/dist/tier-engine/web/client-plugin.js +3 -2
  512. package/dist/tier-engine/web/index.d.ts +1 -1
  513. package/dist/user/index.d.ts +8 -8
  514. package/dist/user/invited-global-roles.d.ts +1 -1
  515. package/dist/user/principal-status.d.ts +1 -1
  516. package/dist/user/seeding.d.ts +1 -1
  517. package/dist/user/testing.d.ts +1 -1
  518. package/dist/user-data-rights/deletion-token.d.ts +1 -1
  519. package/dist/user-data-rights/feature.d.ts +5 -5
  520. package/dist/user-data-rights/handlers/request-deletion.write.d.ts +1 -1
  521. package/dist/user-data-rights/handlers/run-forget-cleanup.write.d.ts +3 -3
  522. package/dist/user-data-rights/index.d.ts +13 -13
  523. package/dist/user-data-rights/lib/default-mailers.d.ts +4 -4
  524. package/dist/user-data-rights/web/client-plugin.d.ts +1 -1
  525. package/dist/user-data-rights/web/index.d.ts +8 -8
  526. package/dist/user-data-rights-defaults/index.d.ts +11 -11
  527. package/dist/user-profile/index.d.ts +2 -2
  528. package/dist/user-profile/web/index.d.ts +2 -2
  529. package/dist/waitlist/constants.d.ts +9 -0
  530. package/dist/waitlist/constants.js +11 -0
  531. package/dist/waitlist/entity.d.ts +38 -6
  532. package/dist/waitlist/entity.js +4 -2
  533. package/dist/waitlist/entries-admin.d.ts +4 -0
  534. package/dist/waitlist/entries-admin.js +42 -0
  535. package/dist/waitlist/feature.d.ts +1 -1
  536. package/dist/waitlist/feature.js +16 -1
  537. package/dist/waitlist/handlers/export-purge.write.d.ts +12 -0
  538. package/dist/waitlist/handlers/export-purge.write.js +61 -0
  539. package/dist/waitlist/handlers/invite.write.d.ts +1 -1
  540. package/dist/waitlist/handlers/submit.write.d.ts +1 -1
  541. package/dist/waitlist/i18n.js +4 -0
  542. package/dist/waitlist/import.d.ts +24 -0
  543. package/dist/waitlist/import.js +51 -0
  544. package/dist/waitlist/index.d.ts +7 -5
  545. package/dist/waitlist/index.js +2 -0
  546. package/dist/waitlist/legacy-migrate.d.ts +27 -0
  547. package/dist/waitlist/legacy-migrate.js +173 -0
  548. package/dist/waitlist/lib.d.ts +2 -2
  549. package/dist/waitlist/link-on-signup.d.ts +3 -0
  550. package/dist/waitlist/link-on-signup.js +83 -0
  551. package/dist/waitlist/options.d.ts +11 -3
  552. package/dist/waitlist/payloads.d.ts +3 -0
  553. package/dist/waitlist/payloads.js +1 -0
  554. package/dist/workflow-runner/feature.d.ts +0 -4
  555. package/dist/workflow-runner/feature.js +0 -2
  556. package/dist/workflow-runner/index.d.ts +4 -4
  557. package/dist/workflow-runner/index.js +1 -1
  558. package/package.json +43 -27
  559. package/src/account-security/changes.json +8 -0
  560. package/src/auth-email-password/changes.json +6 -0
  561. package/src/auth-foundation/changes.json +14 -0
  562. package/src/auth-mfa/changes.json +6 -0
  563. package/src/auth-mfa-user-data/changes.json +10 -1
  564. package/src/billing-foundation/changes.json +14 -0
  565. package/src/cap-counter/changes.json +8 -0
  566. package/src/channel-email/changes.json +6 -0
  567. package/src/compliance-profiles-ops/changes.json +10 -0
  568. package/src/crypto-shredding/changes.json +6 -0
  569. package/src/custom-fields/changes.json +8 -0
  570. package/src/delivery/changes.json +13 -0
  571. package/src/derivatives-sharp/changes.json +8 -0
  572. package/src/document-ingest-foundation/changes.json +8 -0
  573. package/src/file-derivatives/changes.json +8 -0
  574. package/src/file-foundation/changes.json +8 -0
  575. package/src/file-provider-inmemory/changes.json +10 -1
  576. package/src/file-provider-s3/changes.json +28 -0
  577. package/src/folders/changes.json +8 -0
  578. package/src/folders-user-data/changes.json +10 -1
  579. package/src/form-draft/changes.json +8 -0
  580. package/src/form-draft-user-data/changes.json +10 -1
  581. package/src/foundation-shared/changes.json +8 -1
  582. package/src/host-routing/changes.json +8 -0
  583. package/src/inbound-mail-foundation/changes.json +8 -0
  584. package/src/inbound-provider-imap/changes.json +8 -0
  585. package/src/inbound-provider-inmemory/changes.json +10 -1
  586. package/src/ledger/changes.json +8 -0
  587. package/src/legal-pages/changes.json +6 -0
  588. package/src/mail-foundation/changes.json +10 -1
  589. package/src/mail-transport-inmemory/changes.json +10 -1
  590. package/src/mail-transport-smtp/changes.json +8 -0
  591. package/src/notes-history/changes.json +8 -0
  592. package/src/notes-history-user-data/changes.json +8 -0
  593. package/src/presets/changes.json +6 -0
  594. package/src/readiness/changes.json +10 -1
  595. package/src/secrets/changes.json +12 -0
  596. package/src/subscription-stripe/changes.json +6 -0
  597. package/src/tags/changes.json +8 -0
  598. package/src/template-resolver/changes.json +6 -0
  599. package/src/template-resolver-user-data/changes.json +10 -0
  600. package/src/tenant-settings/changes.json +10 -1
  601. package/src/tier-engine/changes.json +8 -0
  602. package/src/waitlist/changes.json +7 -0
  603. package/src/workflow-runner/changes.json +8 -0
  604. package/dist/file-provider-s3-env/index.d.ts +0 -8
  605. package/dist/file-provider-s3-env/index.js +0 -7
  606. package/dist/files-provider-s3/index.d.ts +0 -5
  607. package/dist/files-provider-s3/index.js +0 -5
  608. package/src/file-provider-s3-env/changes.json +0 -1
  609. package/src/files-provider-s3/changes.json +0 -1
@@ -1,6 +1,6 @@
1
1
  import { type HandlerContext } from "@cosmicdrift/kumiko-framework/engine";
2
2
  import * as z from "zod";
3
- import type { TemplateResourceRow } from "../table.js";
3
+ import type { TemplateResourceRow } from "../table.ts";
4
4
  type TemplateStatus = "active" | "archived";
5
5
  export type StatusTarget = "own" | "system";
6
6
  export declare function writeAccessFor(target: StatusTarget): {
@@ -21,4 +21,4 @@ export declare const upsertSystemWrite: import("@cosmicdrift/kumiko-types/define
21
21
  parentTemplateId: import("zod").ZodOptional<import("zod").ZodString>;
22
22
  title: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
23
23
  folder: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
24
- }, import("zod/v4/core").$strip>, import("./template-write.js").WrittenTemplateRow, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap, undefined>;
24
+ }, import("zod/v4/core").$strip>, import("./template-write.ts").WrittenTemplateRow, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap, undefined>;
@@ -27,4 +27,4 @@ export declare const upsertTenantWrite: import("@cosmicdrift/kumiko-types/define
27
27
  active: "active";
28
28
  draft: "draft";
29
29
  }>>;
30
- }, z.core.$strip>, import("./template-write.js").WrittenTemplateRow, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap, undefined>;
30
+ }, z.core.$strip>, import("./template-write.ts").WrittenTemplateRow, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap, undefined>;
@@ -13,5 +13,5 @@ export declare const usageQuery: import("@cosmicdrift/kumiko-types/define-handle
13
13
  "text-block": "text-block";
14
14
  }>;
15
15
  }, z.core.$strip>, {
16
- usedBy: import("../template-usage.js").TemplateUsageEntry[];
16
+ usedBy: import("../template-usage.ts").TemplateUsageEntry[];
17
17
  }, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap>;
@@ -1,7 +1,7 @@
1
1
  import { type HandlerContext, type SessionUser } from "@cosmicdrift/kumiko-framework/engine";
2
2
  import * as z from "zod";
3
- import type { ContentFormat, UpsertKind } from "../constants.js";
4
- import type { TemplateWriteScope } from "../layout-regions.js";
3
+ import type { ContentFormat, UpsertKind } from "../constants.ts";
4
+ import type { TemplateWriteScope } from "../layout-regions.ts";
5
5
  type TemplateDraftInput = {
6
6
  readonly slug: string;
7
7
  readonly kind: UpsertKind;
@@ -29,7 +29,7 @@ export declare function validateTemplateDraft(ctx: HandlerContext, user: Session
29
29
  variables: Readonly<Record<string, import("@cosmicdrift/kumiko-types/config").TemplateVariableDef>>;
30
30
  systemPlaceholders: string[];
31
31
  };
32
- evaluation: import("./template-gates.js").TemplateWriteResult;
32
+ evaluation: import("./template-gates.ts").TemplateWriteResult;
33
33
  }>;
34
34
  export declare const validateQuery: import("@cosmicdrift/kumiko-types/define-handler").QueryHandlerDefinition<"validate", z.ZodObject<{
35
35
  slug: z.ZodString;
@@ -1,25 +1,25 @@
1
- export { createTemplateResolverApi, type ResolveRequest, requireTemplateResolver, TemplateNotFoundError, type TemplateResolverApi, type TemplateResource, } from "./api.js";
2
- export { type CompileDocumentBodyOptions, collectDocumentResourceKeys, compileDocumentBodyToHandlebars, toResourceDataUri, } from "./compile-document-body.js";
3
- export { CONTENT_FORMATS, type ContentFormat, DEFAULT_MAIL_LAYOUT_SLUG, DEFAULT_PDF_LAYOUT_SLUG, DOCUMENT_HTML_KINDS, type DocumentHtmlKind, FALLBACK_LOCALE, NON_RENDER_KINDS, type NonRenderKind, PDF_DEFAULT_MARGIN_MM, PDF_FOOTER_MARGIN_MM, PDF_HEADER_MARGIN_MM, PDF_ORIENTATIONS, PDF_PAGE_FORMATS, type PdfOrientation, type PdfPageFormat, RENDER_KINDS, type RenderKind, SYSTEM_TENANT_ID, TEMPLATE_KINDS, TEMPLATE_SCOPES, TEMPLATE_STATUSES, TEXT_BLOCK_KIND, type TemplateKind, type TemplateScope, type TemplateStatus, UPSERT_KINDS, type UpsertKind, } from "./constants.js";
4
- export { type DocumentViolation, type DocumentViolationCode, documentViolationsToFieldIssues, flattenParagraphsToLineBreaks, type SanitizeBodyResult, type SanitizeHtmlResult, sanitizeDocumentHtml, sanitizeTemplateBody, } from "./document-sanitizer.js";
5
- export { DOCUMENT_CONDITION_ATTRIBUTE, DOCUMENT_NODE_NAMES, DOCUMENT_TEXT_ALIGNMENTS, DocumentButton, DocumentCondition, DocumentDivider, DocumentLink, DocumentPageBreak, DocumentResource, DocumentTable, DocumentTableCell, DocumentTableHeader, DocumentTableRow, DocumentTextAlign, type DocumentTextAlignment, DocumentVariable, documentExtensions, isAllowedDocumentLinkHref, isDocumentPlaceholderHref, isDocumentReferenceName, isDocumentResourceKey, } from "./document-schema.js";
6
- export { createTemplateResolverFeature } from "./feature.js";
7
- export type { LayoutSourceResponse, LayoutSourceRow } from "./handlers/layout-source.query.js";
8
- export type { OverviewKindGroup, OverviewOrigin, OverviewResponse, OverviewRow, OverviewUsage, } from "./handlers/overview.query.js";
9
- export { localeSchema } from "./handlers/shared.js";
10
- export { isHexColor, type MailLayoutAppearance, mailLayoutAppearance, } from "./layout-appearance.js";
11
- export { type LayoutRegions, readLayoutRegions, type SanitizeLayoutResult, sanitizeLayoutHtml, } from "./layout-regions.js";
12
- export { fileAttachmentsOf, imageLinksOf, type LinkedResourceEntry, parseLinkedResourceEntries, pdfAttachmentLinksOf, type TemplatePdfAttachmentLink, templatePdfAttachmentLinkSchema, } from "./linked-resources.js";
13
- export { prepareDocumentForPrint } from "./print-document.js";
14
- export { TEMPLATE_RESOLVER_FEATURE, TemplateResolverErrors, TemplateResolverHandlers, TemplateResolverQueries, } from "./qualified-names.js";
15
- export { mapRecordToVariables } from "./record-mapping.js";
16
- export { type PreparedTemplateImage, prepareTemplateResourceBeforeTransaction, readTemplateResourceMaxBytes, type StoredTemplateResource, storePreparedTemplateResource, } from "./store-template-resource.js";
17
- export { type TemplateResourceRow, templateResourceEntity, templateResourcesTable, } from "./table.js";
18
- export { type TemplateBundle, templateBundleSchema } from "./template-bundle.js";
19
- export { isMailTemplateMeta, type LayoutTemplateMeta, MAIL_CATEGORIES, MAIL_TONES, type MailCategory, type MailLayoutMeta, type MailTemplateMeta, type MailTone, type PdfTemplateMeta, parseTemplateMeta, pdfAttachmentFileNamePatternSchema, readMailLayoutMeta, readPdfTemplateMeta, type TemplateMeta, type TemplateMetaIssue, type TemplateMetaResult, templateSlugSchema, } from "./template-meta.js";
20
- export { type DocumentDraftOutcome, evaluateDocumentDraft } from "./template-preview.js";
21
- export { readTemplateResource, type TemplateResourceFile } from "./template-resources.js";
22
- export { isSystemOnlyTemplate } from "./template-system-only.js";
23
- export { collectTemplateUsage, type TemplateUsageEntry } from "./template-usage.js";
24
- export { hasPlaceholderProblems, resolveTemplateVariables, SYSTEM_PLACEHOLDERS, systemPlaceholdersFor, type TemplateValidation, validateTemplatePlaceholders, } from "./template-validation.js";
25
- export { type UserContentEntryRow, userContentEntriesTable, userContentEntryEntity, } from "./user-content-table.js";
1
+ export { createTemplateResolverApi, type ResolveRequest, requireTemplateResolver, TemplateNotFoundError, type TemplateResolverApi, type TemplateResource, } from "./api.ts";
2
+ export { type CompileDocumentBodyOptions, collectDocumentResourceKeys, compileDocumentBodyToHandlebars, toResourceDataUri, } from "./compile-document-body.ts";
3
+ export { CONTENT_FORMATS, type ContentFormat, DEFAULT_MAIL_LAYOUT_SLUG, DEFAULT_PDF_LAYOUT_SLUG, DOCUMENT_HTML_KINDS, type DocumentHtmlKind, FALLBACK_LOCALE, NON_RENDER_KINDS, type NonRenderKind, PDF_DEFAULT_MARGIN_MM, PDF_FOOTER_MARGIN_MM, PDF_HEADER_MARGIN_MM, PDF_ORIENTATIONS, PDF_PAGE_FORMATS, type PdfOrientation, type PdfPageFormat, RENDER_KINDS, type RenderKind, SYSTEM_TENANT_ID, TEMPLATE_KINDS, TEMPLATE_SCOPES, TEMPLATE_STATUSES, TEXT_BLOCK_KIND, type TemplateKind, type TemplateScope, type TemplateStatus, UPSERT_KINDS, type UpsertKind, } from "./constants.ts";
4
+ export { type DocumentViolation, type DocumentViolationCode, documentViolationsToFieldIssues, flattenParagraphsToLineBreaks, type SanitizeBodyResult, type SanitizeHtmlResult, sanitizeDocumentHtml, sanitizeTemplateBody, } from "./document-sanitizer.ts";
5
+ export { DOCUMENT_CONDITION_ATTRIBUTE, DOCUMENT_NODE_NAMES, DOCUMENT_TEXT_ALIGNMENTS, DocumentButton, DocumentCondition, DocumentDivider, DocumentLink, DocumentPageBreak, DocumentResource, DocumentTable, DocumentTableCell, DocumentTableHeader, DocumentTableRow, DocumentTextAlign, type DocumentTextAlignment, DocumentVariable, documentExtensions, isAllowedDocumentLinkHref, isDocumentPlaceholderHref, isDocumentReferenceName, isDocumentResourceKey, } from "./document-schema.ts";
6
+ export { createTemplateResolverFeature } from "./feature.ts";
7
+ export type { LayoutSourceResponse, LayoutSourceRow } from "./handlers/layout-source.query.ts";
8
+ export type { OverviewKindGroup, OverviewOrigin, OverviewResponse, OverviewRow, OverviewUsage, } from "./handlers/overview.query.ts";
9
+ export { localeSchema } from "./handlers/shared.ts";
10
+ export { isHexColor, type MailLayoutAppearance, mailLayoutAppearance, } from "./layout-appearance.ts";
11
+ export { type LayoutRegions, readLayoutRegions, type SanitizeLayoutResult, sanitizeLayoutHtml, } from "./layout-regions.ts";
12
+ export { fileAttachmentsOf, imageLinksOf, type LinkedResourceEntry, parseLinkedResourceEntries, pdfAttachmentLinksOf, type TemplatePdfAttachmentLink, templatePdfAttachmentLinkSchema, } from "./linked-resources.ts";
13
+ export { prepareDocumentForPrint } from "./print-document.ts";
14
+ export { TEMPLATE_RESOLVER_FEATURE, TemplateResolverErrors, TemplateResolverHandlers, TemplateResolverQueries, } from "./qualified-names.ts";
15
+ export { mapRecordToVariables } from "./record-mapping.ts";
16
+ export { type PreparedTemplateImage, prepareTemplateResourceBeforeTransaction, readTemplateResourceMaxBytes, type StoredTemplateResource, storePreparedTemplateResource, } from "./store-template-resource.ts";
17
+ export { type TemplateResourceRow, templateResourceEntity, templateResourcesTable, } from "./table.ts";
18
+ export { type TemplateBundle, templateBundleSchema } from "./template-bundle.ts";
19
+ export { isMailTemplateMeta, type LayoutTemplateMeta, MAIL_CATEGORIES, MAIL_TONES, type MailCategory, type MailLayoutMeta, type MailTemplateMeta, type MailTone, type PdfTemplateMeta, parseTemplateMeta, pdfAttachmentFileNamePatternSchema, readMailLayoutMeta, readPdfTemplateMeta, type TemplateMeta, type TemplateMetaIssue, type TemplateMetaResult, templateSlugSchema, } from "./template-meta.ts";
20
+ export { type DocumentDraftOutcome, evaluateDocumentDraft } from "./template-preview.ts";
21
+ export { readTemplateResource, type TemplateResourceFile } from "./template-resources.ts";
22
+ export { isSystemOnlyTemplate } from "./template-system-only.ts";
23
+ export { collectTemplateUsage, type TemplateUsageEntry } from "./template-usage.ts";
24
+ export { hasPlaceholderProblems, resolveTemplateVariables, SYSTEM_PLACEHOLDERS, systemPlaceholdersFor, type TemplateValidation, validateTemplatePlaceholders, } from "./template-validation.ts";
25
+ export { type UserContentEntryRow, userContentEntriesTable, userContentEntryEntity, } from "./user-content-table.ts";
@@ -1,4 +1,4 @@
1
- import { type MailLayoutMeta } from "./template-meta.js";
1
+ import { type MailLayoutMeta } from "./template-meta.ts";
2
2
  export type MailLayoutAppearance = {
3
3
  readonly width: number;
4
4
  readonly fontFamily: string;
@@ -1,5 +1,5 @@
1
- import type { ContentFormat } from "./constants.js";
2
- import { type DocumentViolation, type SanitizeBodyResult } from "./document-sanitizer.js";
1
+ import type { ContentFormat } from "./constants.ts";
2
+ import { type DocumentViolation, type SanitizeBodyResult } from "./document-sanitizer.ts";
3
3
  export type LayoutRegions = {
4
4
  readonly header: string;
5
5
  readonly signature: string;
@@ -1,5 +1,5 @@
1
1
  import * as z from "zod";
2
- import type { FileAttachmentRef } from "../renderer-foundation/index.js";
2
+ import type { FileAttachmentRef } from "../renderer-foundation/index.ts";
3
3
  export declare const templatePdfAttachmentLinkSchema: z.ZodObject<{
4
4
  kind: z.ZodLiteral<"rendered-pdf">;
5
5
  templateSlug: z.ZodString;
@@ -1,4 +1,4 @@
1
- import type { InlineAttachmentRef } from "../renderer-foundation/index.js";
1
+ import type { InlineAttachmentRef } from "../renderer-foundation/index.ts";
2
2
  export declare const PREVIEW_IMAGE_BUDGET_BYTES: number;
3
3
  export type PreviewAttachmentReader = (ref: InlineAttachmentRef) => Promise<{
4
4
  readonly content: Uint8Array;
@@ -1,4 +1,4 @@
1
- import { type ResourceImageContentType } from "../shared/index.js";
1
+ import { type ResourceImageContentType } from "../shared/index.ts";
2
2
  export type NormalizedResourceImage = {
3
3
  readonly data: Uint8Array;
4
4
  readonly contentType: ResourceImageContentType;
@@ -2,8 +2,8 @@ import { type DbConnection } from "@cosmicdrift/kumiko-framework/db";
2
2
  import { type Registry, type SessionUser, type TenantId } from "@cosmicdrift/kumiko-framework/engine";
3
3
  import type { Dispatcher } from "@cosmicdrift/kumiko-framework/pipeline";
4
4
  import { type SeedIfExists } from "@cosmicdrift/kumiko-framework/seeding";
5
- import { type ContentFormat, type UpsertKind } from "./constants.js";
6
- import type { TemplateBundle } from "./template-bundle.js";
5
+ import { type ContentFormat, type UpsertKind } from "./constants.ts";
6
+ import type { TemplateBundle } from "./template-bundle.ts";
7
7
  export type SeedSystemTemplateOptions = {
8
8
  readonly slug: string;
9
9
  readonly kind: UpsertKind;
@@ -1,6 +1,6 @@
1
1
  import type { BeforeTransactionResult, ConfigAccessor, HandlerContext, Registry, SessionUser, TenantId, WriteResult } from "@cosmicdrift/kumiko-framework/engine";
2
2
  import { type UploadedFileBytes } from "@cosmicdrift/kumiko-framework/files";
3
- import { type LinkedResourceEntry } from "./linked-resources.js";
3
+ import { type LinkedResourceEntry } from "./linked-resources.ts";
4
4
  export declare function readTemplateResourceMaxBytes(config: ConfigAccessor | undefined, registry: Registry): Promise<number>;
5
5
  export type StoredTemplateResource = {
6
6
  readonly fileRefId: string;
@@ -1,6 +1,6 @@
1
1
  import { Temporal } from "@cosmicdrift/kumiko-types/temporal";
2
- import { type ContentFormat } from "./constants.js";
3
- import type { TemplateResourceRow } from "./table.js";
2
+ import { type ContentFormat } from "./constants.ts";
3
+ import type { TemplateResourceRow } from "./table.ts";
4
4
  export type TemplateDraft = {
5
5
  readonly content: string | null;
6
6
  readonly contentFormat: ContentFormat;
@@ -1,6 +1,6 @@
1
1
  import * as z from "zod";
2
- import { type TemplateKind } from "./constants.js";
3
- import { MAIL_TONES, type MailTone } from "./mail-constants.js";
2
+ import { type TemplateKind } from "./constants.ts";
3
+ import { MAIL_TONES, type MailTone } from "./mail-constants.ts";
4
4
  export declare const templateSlugSchema: z.ZodString;
5
5
  export declare const MAIL_CATEGORIES: readonly ["transactional", "marketing"];
6
6
  export type MailCategory = (typeof MAIL_CATEGORIES)[number];
@@ -1,11 +1,12 @@
1
1
  import type { HandlerContext, SessionUser, TemplateVariables } from "@cosmicdrift/kumiko-framework/engine";
2
2
  import { type KumikoError } from "@cosmicdrift/kumiko-framework/errors";
3
- import { type MailAttachmentRef } from "../renderer-foundation/index.js";
4
- import { type TemplateScope } from "./constants.js";
5
- import { validateTemplateDraft } from "./handlers/validate.query.js";
6
- import { type LayoutRegions, type TemplateWriteScope } from "./layout-regions.js";
7
- import { type PdfTemplateMeta } from "./template-meta.js";
8
- export declare function sampleValuesFor(variables: TemplateVariables): Record<string, unknown>;
3
+ import { type MailAttachmentRef } from "../renderer-foundation/index.ts";
4
+ import { type TemplateScope } from "./constants.ts";
5
+ import { validateTemplateDraft } from "./handlers/validate.query.ts";
6
+ import { type LayoutRegions, type TemplateWriteScope } from "./layout-regions.ts";
7
+ import { type PdfTemplateMeta } from "./template-meta.ts";
8
+ type LabelText = (label: string) => string;
9
+ export declare function sampleValuesFor(variables: TemplateVariables, labelText?: LabelText): Record<string, unknown>;
9
10
  export type PreviewCheckCode = "resources_resolved" | "text_present" | "size_under_cap" | "required_placeholders";
10
11
  export type PreviewCheck = {
11
12
  readonly code: PreviewCheckCode;
@@ -1,6 +1,7 @@
1
1
  import { selectMany } from "@cosmicdrift/kumiko-framework/db";
2
2
  import { NotFoundError, UnprocessableError, ValidationError, } from "@cosmicdrift/kumiko-framework/errors";
3
3
  import { fileRefsTable } from "@cosmicdrift/kumiko-framework/files";
4
+ import { createI18n } from "@cosmicdrift/kumiko-framework/i18n";
4
5
  import { escapeHtml } from "@cosmicdrift/kumiko-headless";
5
6
  import { createEmailAttachmentReader, createTemplateMailRenderer } from "../delivery/index.js";
6
7
  import { fileContextForTenant } from "../file-foundation/index.js";
@@ -19,14 +20,15 @@ import { isMailTemplateMeta, parseTemplateMeta, readPdfTemplateMeta, } from "./t
19
20
  const SAMPLE_LINK = "https://example.com";
20
21
  const SAMPLE_DATE = "2026-01-15";
21
22
  const SAMPLE_LIST_ROWS = 3;
22
- function sampleScalar(name, def) {
23
+ function sampleScalar(name, def, labelText) {
23
24
  if (def.example !== undefined)
24
25
  return def.example;
26
+ const label = def.label === undefined ? name : labelText(def.label);
25
27
  switch (def.type) {
26
28
  case "text":
27
- return `[${def.label ?? name}]`;
29
+ return `[${label}]`;
28
30
  case "richText":
29
- return `<p>[${escapeHtml(def.label ?? name)}]</p>`;
31
+ return `<p>[${escapeHtml(label)}]</p>`;
30
32
  case "link":
31
33
  return SAMPLE_LINK;
32
34
  case "money":
@@ -37,28 +39,33 @@ function sampleScalar(name, def) {
37
39
  return 0;
38
40
  }
39
41
  }
40
- function sampleRow(item, given = {}) {
42
+ function sampleRow(item, labelText, given = {}) {
41
43
  const row = {};
42
44
  for (const [name, def] of Object.entries(item))
43
- row[name] = sampleScalar(name, def);
45
+ row[name] = sampleScalar(name, def, labelText);
44
46
  return { ...row, ...given };
45
47
  }
46
- function sampleList(def) {
48
+ function sampleList(def, labelText) {
47
49
  const rows = (def.example ?? [])
48
50
  .slice(0, SAMPLE_LIST_ROWS)
49
- .map((given) => sampleRow(def.item, given));
51
+ .map((given) => sampleRow(def.item, labelText, given));
50
52
  while (rows.length < SAMPLE_LIST_ROWS)
51
- rows.push(sampleRow(def.item));
53
+ rows.push(sampleRow(def.item, labelText));
52
54
  return rows;
53
55
  }
54
56
  // Declared examples win; the fallbacks are deterministic so a preview never differs between calls.
55
- export function sampleValuesFor(variables) {
57
+ export function sampleValuesFor(variables, labelText = (label) => label) {
56
58
  const values = {};
57
59
  for (const [name, def] of Object.entries(variables)) {
58
- values[name] = def.type === "list" ? sampleList(def) : sampleScalar(name, def);
60
+ values[name] =
61
+ def.type === "list" ? sampleList(def, labelText) : sampleScalar(name, def, labelText);
59
62
  }
60
63
  return values;
61
64
  }
65
+ function labelTextFor(ctx, locale) {
66
+ const i18n = createI18n(ctx.registry, { defaultLocale: "en" });
67
+ return (label) => i18n.t(label, locale);
68
+ }
62
69
  const utf8Bytes = (value) => new TextEncoder().encode(value).length;
63
70
  const failed = (error) => ({ ok: false, error });
64
71
  async function loadStoredDraft(ctx, user, input) {
@@ -286,7 +293,7 @@ export async function evaluateDocumentDraft(ctx, user, scope, draft) {
286
293
  content: evaluation.content ?? "",
287
294
  meta: meta.ok ? readPdfTemplateMeta(meta.meta) : null,
288
295
  variableSchema: draft.variableSchema,
289
- sampleValues: sampleValuesFor(response.variables),
296
+ sampleValues: sampleValuesFor(response.variables, labelTextFor(ctx, draft.locale)),
290
297
  };
291
298
  }
292
299
  // The posted draft when it carries content, else the stored template; null when none is stored.
@@ -397,7 +404,7 @@ export async function renderTemplatePreview(ctx, user, input) {
397
404
  return failed(new ValidationError({ fields: [...evaluation.issues] }));
398
405
  const content = evaluation.content ?? "";
399
406
  const meta = parseTemplateMeta(input.kind, parseStoredJson(evaluation.metaJson));
400
- const sampleValues = sampleValuesFor(validation.variables);
407
+ const sampleValues = sampleValuesFor(validation.variables, labelTextFor(ctx, input.locale));
401
408
  if (input.kind === "document-pdf") {
402
409
  return renderDocumentPreview(ctx, user, {
403
410
  input,
@@ -1,5 +1,5 @@
1
1
  import type { HandlerContext, SessionUser, TenantId, WriteResult } from "@cosmicdrift/kumiko-framework/engine";
2
- import type { LinkedResourceEntry } from "./linked-resources.js";
2
+ import type { LinkedResourceEntry } from "./linked-resources.ts";
3
3
  export type TemplateResourceFile = {
4
4
  readonly fileName: string;
5
5
  readonly contentType: string;
@@ -1,5 +1,5 @@
1
1
  import { type Registry } from "@cosmicdrift/kumiko-framework/engine";
2
- import { type TemplateKind } from "./constants.js";
2
+ import { type TemplateKind } from "./constants.ts";
3
3
  type UsageRole = "template" | "layout";
4
4
  export type TemplateUsageEntry = {
5
5
  readonly qualifiedName: string;
@@ -7,6 +7,8 @@ export type TemplateUsageEntry = {
7
7
  readonly notification: string;
8
8
  readonly trigger: string | null;
9
9
  readonly role: UsageRole;
10
+ /** The mail goes through the tenant's own transport when it has a provider. */
11
+ readonly tenantTransport: boolean;
10
12
  };
11
13
  /** Layout slug of the effective stored mail template, by notification qualified
12
14
  * name and locale. The renderer reads the layout from the stored row's meta,
@@ -27,6 +27,7 @@ export function collectTemplateUsage(registry, slug, kind, effectiveLayouts = ne
27
27
  notification: parsed.name,
28
28
  trigger: notification.trigger?.on ?? null,
29
29
  role,
30
+ tenantTransport: notification.tenantTransport === true,
30
31
  });
31
32
  }
32
33
  }
@@ -1,5 +1,5 @@
1
1
  import type { Registry, TemplateVariables } from "@cosmicdrift/kumiko-framework/engine";
2
- import type { TemplateMeta } from "./template-meta.js";
2
+ import type { TemplateMeta } from "./template-meta.ts";
3
3
  export declare const SYSTEM_PLACEHOLDERS: ReadonlySet<string>;
4
4
  export declare function systemPlaceholdersFor(kind: string): ReadonlySet<string>;
5
5
  export type TemplateValidation = {
@@ -1,5 +1,5 @@
1
1
  import type { DbConnection } from "@cosmicdrift/kumiko-framework/db";
2
- import type { ResolveRequest, TemplateResource } from "./api.js";
2
+ import type { ResolveRequest, TemplateResource } from "./api.ts";
3
3
  export type TemplateConsumer = {
4
4
  readonly resolve: (args: ResolveRequest) => Promise<TemplateResource>;
5
5
  readonly resolveResources?: (template: TemplateResource) => Promise<Record<string, string>>;
@@ -1,4 +1,4 @@
1
- import type { EntityAuditColumns } from "./table.js";
1
+ import type { EntityAuditColumns } from "./table.ts";
2
2
  export declare const userContentEntryEntity: import("@cosmicdrift/kumiko-types/fields").EntityDefinition<{
3
3
  ownerId: {
4
4
  readonly type: "text";
@@ -1,5 +1,5 @@
1
1
  import type { Extensions, NodeViewRenderer } from "@tiptap/core";
2
- import type { DocumentResourcePreview } from "./document-toolbar-blocks.js";
2
+ import type { DocumentResourcePreview } from "./document-toolbar-blocks.ts";
3
3
  export declare const DOCUMENT_BLOCK_ATTRIBUTE = "data-document-block";
4
4
  export type DocumentEditorLabels = {
5
5
  readonly placeholder: string;
@@ -36,8 +36,12 @@ export function createVariableView(variableLabels, systemVariables, labelOnly =
36
36
  const label = Object.hasOwn(variableLabels, labelKey) ? variableLabels[labelKey] : undefined;
37
37
  const dom = createElementWithClass("span", systemVariables.includes(name) ? SYSTEM_CHIP_CLASS : USER_CHIP_CLASS);
38
38
  dom.contentEditable = "false";
39
- dom.append(document.createTextNode(label !== undefined && label !== "" ? label : name));
40
- if (!labelOnly && label !== undefined && label !== "" && label !== name) {
39
+ dom.setAttribute("data-variable-chip", "");
40
+ const hasOwnLabel = label !== undefined && label !== "" && label !== name;
41
+ dom.append(document.createTextNode(hasOwnLabel ? label : name));
42
+ if (hasOwnLabel)
43
+ dom.title = name;
44
+ if (!labelOnly && hasOwnLabel) {
41
45
  dom.append(createElementWithClass("small", "font-mono text-[10px] opacity-75", name));
42
46
  }
43
47
  return { dom };
@@ -1,4 +1,4 @@
1
1
  import { type ReactNode } from "react";
2
- import type { DocumentEditorProps, DocumentToolbarBlock } from "./document-toolbar-blocks.js";
2
+ import type { DocumentEditorProps, DocumentToolbarBlock } from "./document-toolbar-blocks.ts";
3
3
  export declare const DocumentBlocksContext: import("react").Context<readonly DocumentToolbarBlock[] | undefined>;
4
4
  export declare function DocumentContentEditor(props: DocumentEditorProps): ReactNode;
@@ -1,3 +1,3 @@
1
1
  import { type ReactNode } from "react";
2
- import { type DocumentEditorProps } from "./document-toolbar-blocks.js";
2
+ import { type DocumentEditorProps } from "./document-toolbar-blocks.ts";
3
3
  export default function DocumentTiptapEditor({ id, value, onChange, variables, readOnly, blocks, variableLabels, systemVariables, resourcePreviews, chrome, toolbar, renderPaper, toolbarHost, onEditorReady, }: DocumentEditorProps): ReactNode;
@@ -94,11 +94,12 @@ function toggleRepeatHeader(editor) {
94
94
  const PARAGRAPH_STYLES = ["paragraph", "1", "2", "3"];
95
95
  const HEADING_LEVELS = { "1": 1, "2": 2, "3": 3 };
96
96
  const PLACEHOLDER_HREF = /^\{\{([^{}]+)\}\}$/;
97
+ function variableLabelOf(name, labels) {
98
+ return Object.hasOwn(labels, name) ? (labels[name] ?? name) : name;
99
+ }
97
100
  function buttonTargetLabel(href, labels) {
98
101
  const name = PLACEHOLDER_HREF.exec(href)?.[1];
99
- if (name === undefined)
100
- return href;
101
- return Object.hasOwn(labels, name) ? (labels[name] ?? name) : name;
102
+ return name === undefined ? href : variableLabelOf(name, labels);
102
103
  }
103
104
  // The bubble menu registers its plugin once per mount, so a rebuilt editor needs a fresh mount.
104
105
  const editorMountKeys = new WeakMap();
@@ -173,11 +174,11 @@ function PanelActions({ onInsert, onRemoveLink, onCancel, }) {
173
174
  const t = useTranslation();
174
175
  return (_jsxs("div", { className: "flex gap-2", children: [onInsert && (_jsx(Button, { type: "button", size: "sm", onClick: onInsert, children: t("template-resolver.documentEditor.insert") })), onRemoveLink && (_jsx(Button, { type: "button", size: "sm", variant: "danger-ghost", onClick: onRemoveLink, children: t("template-resolver.documentEditor.removeLink") })), _jsx(Button, { type: "button", size: "sm", variant: "secondary", onClick: onCancel, children: t("template-resolver.documentEditor.cancel") })] }));
175
176
  }
176
- function NameSelect({ id, label, names, value, onChange }) {
177
+ function NameSelect({ id, label, names, labels, value, onChange }) {
177
178
  const { Field, Input } = usePrimitives();
178
- return (_jsx(Field, { id: id, label: label, children: _jsx(Input, { kind: "select", id: id, name: id, value: value, onChange: onChange, display: "dropdown", options: names.map((name) => ({ value: name, label: name })) }) }));
179
+ return (_jsx(Field, { id: id, label: label, children: _jsx(Input, { kind: "select", id: id, name: id, value: value, onChange: onChange, display: "dropdown", options: names.map((name) => ({ value: name, label: variableLabelOf(name, labels) })) }) }));
179
180
  }
180
- function InsertPanel({ editor, editorId, kind, variables, onClose }) {
181
+ function InsertPanel({ editor, editorId, kind, variables, variableLabels, onClose, }) {
181
182
  const { Button, Field, Input } = usePrimitives();
182
183
  const t = useTranslation();
183
184
  const [href, setHref] = useState(() => {
@@ -245,7 +246,7 @@ function InsertPanel({ editor, editorId, kind, variables, onClose }) {
245
246
  const needsVariables = kind === "button" || kind === "repeat" || kind === "placeholder" || kind === "steps";
246
247
  const noVariables = needsVariables && selectable.length === 0;
247
248
  const idPrefix = `${editorId}-panel`;
248
- return (_jsxs("div", { className: "flex flex-col gap-2 border-b border-input bg-muted/40 p-2", children: [noVariables && (_jsx("p", { className: "text-sm text-muted-foreground", children: t("template-resolver.documentEditor.noVariables") })), kind === "link" && (_jsx(Field, { id: `${idPrefix}-href`, label: t("template-resolver.documentEditor.linkHref"), children: _jsx(Input, { kind: "text", id: `${idPrefix}-href`, name: "href", value: href, onChange: setHref, placeholder: t("template-resolver.documentEditor.linkHrefPlaceholder") }) })), kind === "placeholder" && !noVariables && (_jsx("div", { className: "flex flex-wrap gap-1", children: _jsx(VariableChips, { variables: selectable, onInsert: (name) => insertAndClose({ type: "variable", attrs: { name } }) }) })), kind === "align" && (_jsx("div", { className: "flex flex-wrap gap-1", children: DOCUMENT_TEXT_ALIGNMENTS.map((alignment) => (_jsxs(Button, { type: "button", variant: "secondary", size: "sm", onClick: () => {
249
+ return (_jsxs("div", { className: "flex flex-col gap-2 border-b border-input bg-muted/40 p-2", children: [noVariables && (_jsx("p", { className: "text-sm text-muted-foreground", children: t("template-resolver.documentEditor.noVariables") })), kind === "link" && (_jsx(Field, { id: `${idPrefix}-href`, label: t("template-resolver.documentEditor.linkHref"), children: _jsx(Input, { kind: "text", id: `${idPrefix}-href`, name: "href", value: href, onChange: setHref, placeholder: t("template-resolver.documentEditor.linkHrefPlaceholder") }) })), kind === "placeholder" && !noVariables && (_jsx("div", { className: "flex flex-wrap gap-1", children: _jsx(VariableChips, { variables: selectable, labels: variableLabels, onInsert: (name) => insertAndClose({ type: "variable", attrs: { name } }) }) })), kind === "align" && (_jsx("div", { className: "flex flex-wrap gap-1", children: DOCUMENT_TEXT_ALIGNMENTS.map((alignment) => (_jsxs(Button, { type: "button", variant: "secondary", size: "sm", onClick: () => {
249
250
  editor
250
251
  .chain()
251
252
  .focus()
@@ -253,7 +254,7 @@ function InsertPanel({ editor, editorId, kind, variables, onClose }) {
253
254
  .updateAttributes("heading", { textAlign: alignment })
254
255
  .run();
255
256
  onClose();
256
- }, children: [ALIGNMENT_ICONS[alignment], t(ALIGNMENT_LABEL_KEYS[alignment])] }, alignment))) })), kind === "image" && (_jsxs(_Fragment, { children: [_jsx(Field, { id: `${idPrefix}-resource`, label: t("template-resolver.documentEditor.resourceKey"), children: _jsx(Input, { kind: "text", id: `${idPrefix}-resource`, name: "resource", value: resource, onChange: setResource }) }), _jsx(Field, { id: `${idPrefix}-alt`, label: t("template-resolver.documentEditor.imageAlt"), children: _jsx(Input, { kind: "text", id: `${idPrefix}-alt`, name: "alt", value: alt, onChange: setAlt }) })] })), kind === "button" && !noVariables && (_jsxs(_Fragment, { children: [_jsx(NameSelect, { id: `${idPrefix}-target`, label: t("template-resolver.documentEditor.buttonTarget"), names: selectable, value: selectedName, onChange: setChosenName }), _jsx(Field, { id: `${idPrefix}-text`, label: t("template-resolver.documentEditor.buttonText"), children: _jsx(Input, { kind: "text", id: `${idPrefix}-text`, name: "text", value: buttonText, onChange: setButtonText }) })] })), kind === "repeat" && !noVariables && (_jsx(NameSelect, { id: `${idPrefix}-list`, label: t("template-resolver.documentEditor.repeatList"), names: selectable, value: selectedName, onChange: setChosenName })), kind === "steps" && !noVariables && (_jsxs(_Fragment, { children: [_jsx(NameSelect, { id: `${idPrefix}-steps-variable`, label: t("template-resolver.documentEditor.stepsVariable"), names: selectable, value: selectedName, onChange: setChosenName }), _jsx(Field, { id: `${idPrefix}-steps-list`, label: t("template-resolver.documentEditor.stepsList"), children: _jsx(Input, { kind: "text", id: `${idPrefix}-steps-list`, name: "steps", value: stepsText, onChange: setStepsText }) })] })), error !== null && (_jsx("p", { role: "alert", className: "text-sm text-destructive", children: error })), _jsx("div", { className: "flex flex-wrap gap-2", children: _jsx(PanelActions, { onCancel: onClose, ...(kind === "link" && { onInsert: submitLink }), ...(kind === "link" &&
257
+ }, children: [ALIGNMENT_ICONS[alignment], t(ALIGNMENT_LABEL_KEYS[alignment])] }, alignment))) })), kind === "image" && (_jsxs(_Fragment, { children: [_jsx(Field, { id: `${idPrefix}-resource`, label: t("template-resolver.documentEditor.resourceKey"), children: _jsx(Input, { kind: "text", id: `${idPrefix}-resource`, name: "resource", value: resource, onChange: setResource }) }), _jsx(Field, { id: `${idPrefix}-alt`, label: t("template-resolver.documentEditor.imageAlt"), children: _jsx(Input, { kind: "text", id: `${idPrefix}-alt`, name: "alt", value: alt, onChange: setAlt }) })] })), kind === "button" && !noVariables && (_jsxs(_Fragment, { children: [_jsx(NameSelect, { id: `${idPrefix}-target`, label: t("template-resolver.documentEditor.buttonTarget"), names: selectable, labels: variableLabels, value: selectedName, onChange: setChosenName }), _jsx(Field, { id: `${idPrefix}-text`, label: t("template-resolver.documentEditor.buttonText"), children: _jsx(Input, { kind: "text", id: `${idPrefix}-text`, name: "text", value: buttonText, onChange: setButtonText }) })] })), kind === "repeat" && !noVariables && (_jsx(NameSelect, { id: `${idPrefix}-list`, label: t("template-resolver.documentEditor.repeatList"), names: selectable, labels: variableLabels, value: selectedName, onChange: setChosenName })), kind === "steps" && !noVariables && (_jsxs(_Fragment, { children: [_jsx(NameSelect, { id: `${idPrefix}-steps-variable`, label: t("template-resolver.documentEditor.stepsVariable"), names: selectable, labels: variableLabels, value: selectedName, onChange: setChosenName }), _jsx(Field, { id: `${idPrefix}-steps-list`, label: t("template-resolver.documentEditor.stepsList"), children: _jsx(Input, { kind: "text", id: `${idPrefix}-steps-list`, name: "steps", value: stepsText, onChange: setStepsText }) })] })), error !== null && (_jsx("p", { role: "alert", className: "text-sm text-destructive", children: error })), _jsx("div", { className: "flex flex-wrap gap-2", children: _jsx(PanelActions, { onCancel: onClose, ...(kind === "link" && { onInsert: submitLink }), ...(kind === "link" &&
257
258
  editor.isActive("link") && {
258
259
  onRemoveLink: () => {
259
260
  editor.chain().focus().extendMarkRange("link").unsetLink().run();
@@ -448,7 +449,9 @@ export default function DocumentTiptapEditor({ id, value, onChange, variables, r
448
449
  ? "[&_.ProseMirror]:outline-none"
449
450
  : "[&_.ProseMirror]:min-h-40 [&_.ProseMirror]:outline-none", "[&_ul]:list-disc [&_ol]:list-decimal [&_ul]:pl-6 [&_ol]:pl-6", "[&_h1]:text-xl [&_h1]:font-bold [&_h2]:text-lg [&_h2]:font-bold [&_h3]:text-base [&_h3]:font-bold", "[&_a]:underline [&_a]:text-primary", "[&_strong]:font-bold [&_em]:italic [&_u]:underline", canvas
450
451
  ? "[&_table]:mb-2 [&_table]:mt-6 [&_.ProseMirror>:first-child_table]:mt-0 [&_.ProseMirror>table:first-child]:mt-0 [&_td:last-child>p[data-size=small][data-align=right]]:whitespace-nowrap"
451
- : "[&_table]:my-2", "[&_table]:w-full [&_table]:border-collapse", "[&_td]:border-b [&_td]:border-border [&_td]:px-2 [&_td]:py-1.5 [&_td>p]:m-0 [&_th>p]:m-0", "[&_th]:border-b [&_th]:border-border [&_th]:px-2 [&_th]:py-1.5 [&_th]:text-left [&_th]:text-xs [&_th]:font-medium [&_th]:text-muted-foreground", "[&_tr[data-each]>td]:bg-muted/50", "[&_[data-align=left]]:text-left [&_[data-align=center]]:text-center [&_[data-align=right]]:text-right [&_[data-align=justify]]:text-justify", "[&_p[data-size=small]]:text-xs [&_p[data-size=small]]:text-muted-foreground", "[&_a[data-button]]:inline-block [&_a[data-button]]:rounded-full [&_a[data-button]]:bg-primary [&_a[data-button]]:px-4 [&_a[data-button]]:py-1.5 [&_a[data-button]]:text-primary-foreground [&_a[data-button]]:no-underline", "[&_hr]:my-3 [&_hr]:border-input", "[&_.is-editor-empty]:before:pointer-events-none [&_.is-editor-empty]:before:float-left [&_.is-editor-empty]:before:h-0 [&_.is-editor-empty]:before:text-muted-foreground [&_.is-editor-empty]:before:content-[attr(data-placeholder)]") }));
452
+ : "[&_table]:my-2", "[&_table]:w-full [&_table]:border-collapse", "[&_td]:border-b [&_td]:border-border [&_td]:px-2 [&_td]:py-1.5 [&_td>p]:m-0 [&_th>p]:m-0", "[&_th]:border-b [&_th]:border-border [&_th]:px-2 [&_th]:py-1.5 [&_th]:text-left [&_th]:text-xs [&_th]:font-medium [&_th]:text-muted-foreground", "[&_tr[data-each]>td]:bg-muted/50", "[&_[data-align=left]]:text-left [&_[data-align=center]]:text-center [&_[data-align=right]]:text-right [&_[data-align=justify]]:text-justify", "[&_p[data-size=small]]:text-xs [&_p[data-size=small]]:text-muted-foreground", "[&_a[data-button]]:inline-block [&_a[data-button]]:rounded-full [&_a[data-button]]:bg-primary [&_a[data-button]]:px-4 [&_a[data-button]]:py-1.5 [&_a[data-button]]:text-primary-foreground [&_a[data-button]]:no-underline",
453
+ // A chip in the button would be primary on primary; it inverts to stay readable.
454
+ "[&_a[data-button]_[data-variable-chip]]:border-primary-foreground/40 [&_a[data-button]_[data-variable-chip]]:bg-primary-foreground/15 [&_a[data-button]_[data-variable-chip]]:text-primary-foreground", "[&_hr]:my-3 [&_hr]:border-input", "[&_.is-editor-empty]:before:pointer-events-none [&_.is-editor-empty]:before:float-left [&_.is-editor-empty]:before:h-0 [&_.is-editor-empty]:before:text-muted-foreground [&_.is-editor-empty]:before:content-[attr(data-placeholder)]") }));
452
455
  // The canvas toolbar never scrolls sideways: the rarer blocks and the HTML view sit in the menu.
453
456
  const menuBlocks = canvas && ActionOverflowMenu !== undefined
454
457
  ? blocks.filter((block) => !CANVAS_INLINE_BLOCKS.includes(block))
@@ -504,7 +507,7 @@ export default function DocumentTiptapEditor({ id, value, onChange, variables, r
504
507
  : t("template-resolver.documentEditor.buttonTarget"), ": ", selectedBlock.type === "button" ? (_jsx("strong", { children: buttonTargetLabel(selectedBlock.detail, variableLabels) })) : (_jsx("code", { children: selectedBlock.detail }))] }), _jsx(Button, { type: "button", size: "sm", variant: "danger-ghost", onClick: () => {
505
508
  editor.chain().focus().deleteNode(selectedBlock.type).run();
506
509
  }, children: t("template-resolver.documentEditor.removeBlock") })] })) : (repeatTable !== null && (_jsxs("div", { "data-testid": "document-repeat-bar", className: BUBBLE_BAR_CLASS, children: [_jsx("span", { className: "px-1.5 text-[10px] uppercase tracking-wide text-muted-foreground", children: repeatBarLabel }), _jsx(Button, { type: "button", variant: "secondary", size: "sm", pressed: repeatTable.headerRepeats, onClick: () => toggleRepeatHeader(editor), children: t("template-resolver.documentEditor.repeatHeader") })] }))) }, mountKeyOf(editor)));
507
- const insertPanel = openPanel !== null && !readOnly && (_jsx(InsertPanel, { editor: editor, editorId: id, kind: openPanel, variables: variables, onClose: () => setOpenPanel(null) }, openPanel));
510
+ const insertPanel = openPanel !== null && !readOnly && (_jsx(InsertPanel, { editor: editor, editorId: id, kind: openPanel, variables: variables, variableLabels: stableLabels, onClose: () => setOpenPanel(null) }, openPanel));
508
511
  if (hosted) {
509
512
  return (_jsxs(_Fragment, { children: [toolbarHost !== null &&
510
513
  createPortal(_jsxs(_Fragment, { children: [toolbarBar, insertPanel] }), toolbarHost), !readOnly && bubbleMenu, editorContent] }));
@@ -1,3 +1,3 @@
1
1
  import type { Editor } from "@tiptap/core";
2
- import type { DocumentEditorHandle } from "./document-toolbar-blocks.js";
2
+ import type { DocumentEditorHandle } from "./document-toolbar-blocks.ts";
3
3
  export declare function createEditorHandle(editor: Editor): DocumentEditorHandle;
@@ -1,7 +1,7 @@
1
- export { MAIL_TONES, type MailTone } from "../mail-constants.js";
2
- export { PDF_DEFAULT_MARGIN_MM, PDF_FOOTER_MARGIN_MM, PDF_HEADER_MARGIN_MM, PDF_ORIENTATIONS, PDF_PAGE_FORMATS, } from "../pdf-constants.js";
3
- export { TemplateResolverErrors, TemplateResolverHandlers, TemplateResolverQueries, } from "../qualified-names.js";
4
- export { textBlocksClient } from "./client-plugin.js";
5
- export { DocumentContentEditor } from "./document-editor.js";
6
- export { type DocumentEditorChrome, type DocumentEditorHandle, type DocumentEditorProps, type DocumentResourcePreview, type DocumentToolbarBlock, MAIL_DOCUMENT_BLOCKS, PDF_DOCUMENT_BLOCKS, } from "./document-toolbar-blocks.js";
7
- export { PlaceholderLineEditor, type PlaceholderLineEditorProps, } from "./placeholder-line-editor-lazy.js";
1
+ export { MAIL_TONES, type MailTone } from "../mail-constants.ts";
2
+ export { PDF_DEFAULT_MARGIN_MM, PDF_FOOTER_MARGIN_MM, PDF_HEADER_MARGIN_MM, PDF_ORIENTATIONS, PDF_PAGE_FORMATS, } from "../pdf-constants.ts";
3
+ export { TemplateResolverErrors, TemplateResolverHandlers, TemplateResolverQueries, } from "../qualified-names.ts";
4
+ export { textBlocksClient } from "./client-plugin.tsx";
5
+ export { DocumentContentEditor } from "./document-editor.tsx";
6
+ export { type DocumentEditorChrome, type DocumentEditorHandle, type DocumentEditorProps, type DocumentResourcePreview, type DocumentToolbarBlock, MAIL_DOCUMENT_BLOCKS, PDF_DOCUMENT_BLOCKS, } from "./document-toolbar-blocks.ts";
7
+ export { PlaceholderLineEditor, type PlaceholderLineEditorProps, } from "./placeholder-line-editor-lazy.tsx";
@@ -1,4 +1,4 @@
1
1
  import { type ReactNode } from "react";
2
- import type { PlaceholderLineEditorProps } from "./placeholder-line-editor.js";
3
- export type { PlaceholderLineEditorProps } from "./placeholder-line-editor.js";
2
+ import type { PlaceholderLineEditorProps } from "./placeholder-line-editor.tsx";
3
+ export type { PlaceholderLineEditorProps } from "./placeholder-line-editor.tsx";
4
4
  export declare function PlaceholderLineEditor(props: PlaceholderLineEditorProps): ReactNode;
@@ -1,5 +1,5 @@
1
1
  import { type ReactNode } from "react";
2
- import type { DocumentEditorHandle } from "./document-toolbar-blocks.js";
2
+ import type { DocumentEditorHandle } from "./document-toolbar-blocks.ts";
3
3
  export type PlaceholderLineEditorProps = {
4
4
  readonly id: string;
5
5
  /** Plain text with `{{name}}` placeholders. */
@@ -1,7 +1,3 @@
1
1
  export declare function createTemplateResolverUserDataFeature(): import("@cosmicdrift/kumiko-types/feature").FeatureDefinition & {
2
2
  readonly exports: void;
3
3
  };
4
- /** @deprecated Use createTemplateResolverUserDataFeature(). Run `bun kumiko-upgrade --apply`. Removed in the first release after 2026-10-29. */
5
- export declare const templateResolverUserDataFeature: import("@cosmicdrift/kumiko-types/feature").FeatureDefinition & {
6
- readonly exports: void;
7
- };
@@ -21,5 +21,3 @@ export function createTemplateResolverUserDataFeature() {
21
21
  });
22
22
  }, { dedupeOptions: {} });
23
23
  }
24
- /** @deprecated Use createTemplateResolverUserDataFeature(). Run `bun kumiko-upgrade --apply`. Removed in the first release after 2026-10-29. */
25
- export const templateResolverUserDataFeature = createTemplateResolverUserDataFeature();
@@ -1,5 +1,5 @@
1
1
  import { type AssignableAppRoles, type FeatureDefinition } from "@cosmicdrift/kumiko-framework/engine";
2
- export { tenantEntity, tenantTable } from "./schema/tenant.js";
2
+ export { tenantEntity, tenantTable } from "./schema/tenant.ts";
3
3
  export type TenantFeatureOptions = {
4
4
  /** Adds the /members "invite" drawer button + its `invite-create`
5
5
  * actionForm, bound to auth-email-password's `invite-create` write-
@@ -1,10 +1,10 @@
1
- export { cancelPendingInvitation } from "./cancel-pending-invitation.js";
2
- export { TenantCommandSchemas } from "./command-schemas.js";
3
- export { OWNER_INVITE_ROLE_OPTIONS, TENANT_FEATURE, TenantErrors, TenantHandlers, TenantQueries, } from "./constants.js";
4
- export { decryptTenantNames } from "./decrypt-tenant-names.js";
5
- export { collectAssignableAppRoles, createTenantFeature } from "./feature.js";
6
- export type { InvitationStatus } from "./invitation-table.js";
7
- export { INVITATION_STATUS, INVITATION_STATUSES, tenantInvitationEntity, tenantInvitationsTable, } from "./invitation-table.js";
8
- export { isTenantServingPublicContent } from "./is-tenant-serving-public-content.js";
9
- export { tenantMembershipEntity, tenantMembershipsTable } from "./membership-table.js";
10
- export { TENANT_LIFECYCLE_STATUSES, type TenantLifecycleStatus, tenantEntity, tenantTable, } from "./schema/tenant.js";
1
+ export { cancelPendingInvitation } from "./cancel-pending-invitation.ts";
2
+ export { TenantCommandSchemas } from "./command-schemas.ts";
3
+ export { OWNER_INVITE_ROLE_OPTIONS, TENANT_FEATURE, TenantErrors, TenantHandlers, TenantQueries, } from "./constants.ts";
4
+ export { decryptTenantNames } from "./decrypt-tenant-names.ts";
5
+ export { collectAssignableAppRoles, createTenantFeature } from "./feature.ts";
6
+ export type { InvitationStatus } from "./invitation-table.ts";
7
+ export { INVITATION_STATUS, INVITATION_STATUSES, tenantInvitationEntity, tenantInvitationsTable, } from "./invitation-table.ts";
8
+ export { isTenantServingPublicContent } from "./is-tenant-serving-public-content.ts";
9
+ export { tenantMembershipEntity, tenantMembershipsTable } from "./membership-table.ts";
10
+ export { TENANT_LIFECYCLE_STATUSES, type TenantLifecycleStatus, tenantEntity, tenantTable, } from "./schema/tenant.ts";
@@ -1,4 +1,4 @@
1
- import type { TenantLifecycleStatus } from "./schema/tenant.js";
1
+ import type { TenantLifecycleStatus } from "./schema/tenant.ts";
2
2
  /** Whether a tenant still serves content to anonymous/public callers.
3
3
  * `destroyRequested` is deliberately blocked too, not just `destroying`
4
4
  * onward — secure by default: the tenant already asked to be removed, so
@@ -1 +1 @@
1
- export * from "./seeding.js";
1
+ export * from "./seeding.ts";
@@ -1,3 +1,3 @@
1
- export { type TenantClientOptions, tenantClient } from "./client-plugin.js";
2
- export { MemberRolesCell } from "./member-roles-cell.js";
3
- export { MemberStatusCell } from "./member-status-cell.js";
1
+ export { type TenantClientOptions, tenantClient } from "./client-plugin.tsx";
2
+ export { MemberRolesCell } from "./member-roles-cell.tsx";
3
+ export { MemberStatusCell } from "./member-status-cell.tsx";