@orizm/cli 3.1.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (357) hide show
  1. package/README.md +27 -1
  2. package/dist/agent-Bd30EhQC.mjs +14 -0
  3. package/dist/agent-Bd30EhQC.mjs.map +1 -0
  4. package/dist/agent-vC2-9rjt.cjs +14 -0
  5. package/dist/agent-vC2-9rjt.cjs.map +1 -0
  6. package/dist/auth-BnXPHgBU.cjs +18 -0
  7. package/dist/{auth-CNbONZuf.cjs.map → auth-BnXPHgBU.cjs.map} +1 -1
  8. package/dist/{auth-BGW072BP.mjs → auth-DHVtM0sF.mjs} +4 -4
  9. package/dist/{auth-BGW072BP.mjs.map → auth-DHVtM0sF.mjs.map} +1 -1
  10. package/dist/{bucket-mg5QQORh.cjs → bucket-CFaYmimY.cjs} +3 -3
  11. package/dist/{bucket-mg5QQORh.cjs.map → bucket-CFaYmimY.cjs.map} +1 -1
  12. package/dist/{bucket-DqW-WEYb.mjs → bucket-D-lu1xgZ.mjs} +3 -3
  13. package/dist/{bucket-DqW-WEYb.mjs.map → bucket-D-lu1xgZ.mjs.map} +1 -1
  14. package/dist/cli/main.cjs +14 -12
  15. package/dist/cli/main.cjs.map +1 -1
  16. package/dist/cli/main.mjs +14 -13
  17. package/dist/cli/main.mjs.map +1 -1
  18. package/dist/{cms-Cnx-lDGu.cjs → cms-CId7jg5l.cjs} +5 -5
  19. package/dist/cms-CId7jg5l.cjs.map +1 -0
  20. package/dist/{cms-BJnovGYT.mjs → cms-DLOypcw8.mjs} +5 -5
  21. package/dist/cms-DLOypcw8.mjs.map +1 -0
  22. package/dist/{codegen-DZOB4ttR.mjs → codegen-BKE_IYoM.mjs} +3 -3
  23. package/dist/{codegen-DZOB4ttR.mjs.map → codegen-BKE_IYoM.mjs.map} +1 -1
  24. package/dist/{codegen-BF5b-u46.cjs → codegen-kbbIwPbb.cjs} +3 -3
  25. package/dist/{codegen-BF5b-u46.cjs.map → codegen-kbbIwPbb.cjs.map} +1 -1
  26. package/dist/{confirm-delete-B9o73U7B.cjs → confirm-delete-BX8bJrXZ.cjs} +3 -3
  27. package/dist/{confirm-delete-B9o73U7B.cjs.map → confirm-delete-BX8bJrXZ.cjs.map} +1 -1
  28. package/dist/{confirm-delete-CsWkW69-.mjs → confirm-delete-CcKLYuCB.mjs} +2 -2
  29. package/dist/{confirm-delete-CsWkW69-.mjs.map → confirm-delete-CcKLYuCB.mjs.map} +1 -1
  30. package/dist/{consumer-C4WiGHWG.mjs → consumer-BAM3E_68.mjs} +4 -4
  31. package/dist/{consumer-C4WiGHWG.mjs.map → consumer-BAM3E_68.mjs.map} +1 -1
  32. package/dist/{consumer-pU2HyiyA.mjs → consumer-CqyZdG9v.mjs} +4 -4
  33. package/dist/consumer-CqyZdG9v.mjs.map +1 -0
  34. package/dist/consumer-D-Y6KJ8a.cjs +18 -0
  35. package/dist/{consumer-l-8wUK8E.cjs.map → consumer-D-Y6KJ8a.cjs.map} +1 -1
  36. package/dist/{consumer-OF6Z_eTP.cjs → consumer-OG6IEJun.cjs} +4 -4
  37. package/dist/consumer-OG6IEJun.cjs.map +1 -0
  38. package/dist/content-ClRuLcGq.cjs +20 -0
  39. package/dist/{content-DMjSwor1.cjs.map → content-ClRuLcGq.cjs.map} +1 -1
  40. package/dist/content-DWnYo6ad.mjs +20 -0
  41. package/dist/{content-BOb6NC8M.mjs.map → content-DWnYo6ad.mjs.map} +1 -1
  42. package/dist/{create-DJY71sp9.cjs → create-B3d4CDel.cjs} +2 -2
  43. package/dist/{create-DJY71sp9.cjs.map → create-B3d4CDel.cjs.map} +1 -1
  44. package/dist/{create-CC814ixh.mjs → create-BD6iS4n6.mjs} +2 -2
  45. package/dist/{create-CC814ixh.mjs.map → create-BD6iS4n6.mjs.map} +1 -1
  46. package/dist/{create-B-PAOor6.mjs → create-BGV3F44O.mjs} +3 -3
  47. package/dist/{create-B-PAOor6.mjs.map → create-BGV3F44O.mjs.map} +1 -1
  48. package/dist/{create-Z-z3LXNW.cjs → create-BYDbsUvw.cjs} +3 -3
  49. package/dist/{create-Z-z3LXNW.cjs.map → create-BYDbsUvw.cjs.map} +1 -1
  50. package/dist/{create-Belwettw.mjs → create-BtuS23L3.mjs} +2 -2
  51. package/dist/{create-Belwettw.mjs.map → create-BtuS23L3.mjs.map} +1 -1
  52. package/dist/{create-CCsn7yp5.cjs → create-CNDCTpi0.cjs} +3 -3
  53. package/dist/{create-CCsn7yp5.cjs.map → create-CNDCTpi0.cjs.map} +1 -1
  54. package/dist/{create-BNYWcyuQ.cjs → create-DzRMGpm_.cjs} +2 -2
  55. package/dist/{create-BNYWcyuQ.cjs.map → create-DzRMGpm_.cjs.map} +1 -1
  56. package/dist/{create-B1ZBOqcV.mjs → create-fweRd0UB.mjs} +2 -2
  57. package/dist/{create-B1ZBOqcV.mjs.map → create-fweRd0UB.mjs.map} +1 -1
  58. package/dist/{create-D5suBd3J.mjs → create-m5fNBqQE.mjs} +3 -3
  59. package/dist/{create-D5suBd3J.mjs.map → create-m5fNBqQE.mjs.map} +1 -1
  60. package/dist/{create-CmOriwGo.cjs → create-tWGEtI3t.cjs} +2 -2
  61. package/dist/{create-CmOriwGo.cjs.map → create-tWGEtI3t.cjs.map} +1 -1
  62. package/dist/{delete-DhSU-Lx2.mjs → delete-B8VlzzCj.mjs} +3 -3
  63. package/dist/{delete-DhSU-Lx2.mjs.map → delete-B8VlzzCj.mjs.map} +1 -1
  64. package/dist/{delete-DVrafka1.cjs → delete-B9j8c8ln.cjs} +3 -3
  65. package/dist/{delete-DVrafka1.cjs.map → delete-B9j8c8ln.cjs.map} +1 -1
  66. package/dist/{delete-ZIifaG0i.mjs → delete-BhJK-8vE.mjs} +3 -3
  67. package/dist/{delete-ZIifaG0i.mjs.map → delete-BhJK-8vE.mjs.map} +1 -1
  68. package/dist/{delete-YYh_0khQ.mjs → delete-Bi6UhAhS.mjs} +3 -3
  69. package/dist/{delete-YYh_0khQ.mjs.map → delete-Bi6UhAhS.mjs.map} +1 -1
  70. package/dist/{delete-CCTiCYIL.cjs → delete-C_oxZa_p.cjs} +3 -3
  71. package/dist/{delete-CCTiCYIL.cjs.map → delete-C_oxZa_p.cjs.map} +1 -1
  72. package/dist/{delete-CSs5Czlo.mjs → delete-Ci7cq3mU.mjs} +3 -3
  73. package/dist/{delete-CSs5Czlo.mjs.map → delete-Ci7cq3mU.mjs.map} +1 -1
  74. package/dist/{delete-XWJRhBFs.mjs → delete-CiWkGnog.mjs} +3 -3
  75. package/dist/{delete-XWJRhBFs.mjs.map → delete-CiWkGnog.mjs.map} +1 -1
  76. package/dist/{delete-DozSxZQ7.cjs → delete-Cmk80aqF.cjs} +3 -3
  77. package/dist/{delete-DozSxZQ7.cjs.map → delete-Cmk80aqF.cjs.map} +1 -1
  78. package/dist/{delete-8yZ3j0vX.cjs → delete-CvtvB2Cr.cjs} +3 -3
  79. package/dist/{delete-8yZ3j0vX.cjs.map → delete-CvtvB2Cr.cjs.map} +1 -1
  80. package/dist/{delete-CIYY59v_.cjs → delete-DG825UwK.cjs} +4 -3
  81. package/dist/{delete-CIYY59v_.cjs.map → delete-DG825UwK.cjs.map} +1 -1
  82. package/dist/{delete-WpMIIvjj.cjs → delete-DGrSMqOt.cjs} +3 -3
  83. package/dist/{delete-WpMIIvjj.cjs.map → delete-DGrSMqOt.cjs.map} +1 -1
  84. package/dist/{delete-BOUObrDw.mjs → delete-Datr3Kqq.mjs} +3 -2
  85. package/dist/{delete-BOUObrDw.mjs.map → delete-Datr3Kqq.mjs.map} +1 -1
  86. package/dist/{delete-D4r1ve4v.cjs → delete-TTF4pIKw.cjs} +3 -3
  87. package/dist/{delete-D4r1ve4v.cjs.map → delete-TTF4pIKw.cjs.map} +1 -1
  88. package/dist/{delete-BSLIXrAh.mjs → delete-X8iVsETw.mjs} +3 -3
  89. package/dist/{delete-BSLIXrAh.mjs.map → delete-X8iVsETw.mjs.map} +1 -1
  90. package/dist/docs/features/cli/authentication.md +93 -0
  91. package/dist/docs/features/cli/commands/agent.md +49 -0
  92. package/dist/docs/features/cli/commands/auth.md +36 -0
  93. package/dist/docs/features/cli/commands/bucket.md +120 -0
  94. package/dist/docs/features/cli/commands/codegen.md +51 -0
  95. package/dist/docs/features/cli/commands/content.md +117 -0
  96. package/dist/docs/features/cli/commands/key.md +155 -0
  97. package/dist/docs/features/cli/commands/link.md +21 -0
  98. package/dist/docs/features/cli/commands/org.md +18 -0
  99. package/dist/docs/features/cli/commands/project-user.md +108 -0
  100. package/dist/docs/features/cli/commands/project.md +106 -0
  101. package/dist/docs/features/cli/commands/schema.md +107 -0
  102. package/dist/docs/features/cli/commands/webhook.md +110 -0
  103. package/dist/docs/features/cli/commands.md +110 -0
  104. package/dist/docs/features/cli/configuration.md +70 -0
  105. package/dist/docs/features/cli/output.md +53 -0
  106. package/dist/docs/features/cli/project-linking.md +58 -0
  107. package/dist/docs/features/cli/quickstart.md +83 -0
  108. package/dist/docs/features/cli.md +56 -0
  109. package/dist/docs/features/cms-sdk/account.md +122 -0
  110. package/dist/docs/features/cms-sdk/auth.md +122 -0
  111. package/dist/docs/features/cms-sdk/bucket.md +113 -0
  112. package/dist/docs/features/cms-sdk/cli.md +104 -0
  113. package/dist/docs/features/cms-sdk/fetch-contents.md +608 -0
  114. package/dist/docs/features/cms-sdk/install.md +98 -0
  115. package/dist/docs/features/cms-sdk/management-user.md +244 -0
  116. package/dist/docs/features/cms-sdk/migrate-to-v2.md +152 -0
  117. package/dist/docs/features/cms-sdk/mutation-contents.md +190 -0
  118. package/dist/docs/features/console/audit-logs.md +52 -0
  119. package/dist/docs/features/console/bucket.md +70 -0
  120. package/dist/docs/features/console/create-project.md +103 -0
  121. package/dist/docs/features/console/generate-api-key.md +103 -0
  122. package/dist/docs/features/console/invite-project-users.md +70 -0
  123. package/dist/docs/features/console/management-tables.md +131 -0
  124. package/dist/docs/features/console/organization-member-management.md +78 -0
  125. package/dist/docs/features/console/schema-history.md +29 -0
  126. package/dist/docs/features/console.md +15 -0
  127. package/dist/docs/features/consumer-sdk/cli.md +60 -0
  128. package/dist/docs/features/consumer-sdk/fetch-contents.md +603 -0
  129. package/dist/docs/features/consumer-sdk/install.md +90 -0
  130. package/dist/docs/features/consumer-sdk/migrate-to-v2.md +43 -0
  131. package/dist/docs/features/design-editor/about.md +36 -0
  132. package/dist/docs/features/design-editor/getting-started.md +244 -0
  133. package/dist/docs/features/design-editor/install.md +17 -0
  134. package/dist/docs/features/design-editor/prop-editor.md +83 -0
  135. package/dist/docs/features/design-editor/schema.md +279 -0
  136. package/dist/docs/features/draft.md +241 -0
  137. package/dist/docs/features/form/about.md +83 -0
  138. package/dist/docs/features/form/editor.md +410 -0
  139. package/dist/docs/features/form/submission.md +94 -0
  140. package/dist/docs/features/full-text-search.md +64 -0
  141. package/dist/docs/features/history.md +152 -0
  142. package/dist/docs/features/schema/about.md +215 -0
  143. package/dist/docs/features/schema/authority.md +456 -0
  144. package/dist/docs/features/schema/bucket.md +142 -0
  145. package/dist/docs/features/schema/database.md +419 -0
  146. package/dist/docs/features/schema/table-module.md +140 -0
  147. package/dist/docs/features/webhook/revalidate-nextjs.md +185 -0
  148. package/dist/docs/features/webhook.md +295 -0
  149. package/dist/docs/get-started/add-model-starter.md +124 -0
  150. package/dist/docs/get-started/get-started-with-starter.md +218 -0
  151. package/dist/docs/index.md +88 -0
  152. package/dist/docs/introduction.md +140 -0
  153. package/dist/docs/manifest.json +6 -0
  154. package/dist/docs/resources/cli-migration-guide.md +82 -0
  155. package/dist/docs/resources/cli-v2-to-v3-migration-guide.md +138 -0
  156. package/dist/docs/resources/deploy-to-vercel.md +62 -0
  157. package/dist/docs/resources/limits.md +24 -0
  158. package/dist/docs/resources/private-registry.md +23 -0
  159. package/dist/docs/resources/status.md +22 -0
  160. package/dist/docs/resources/user-model.md +38 -0
  161. package/dist/{download-ogGbb3FU.cjs → download-BkzmfQXD.cjs} +2 -2
  162. package/dist/{download-ogGbb3FU.cjs.map → download-BkzmfQXD.cjs.map} +1 -1
  163. package/dist/{download-oFGzg30E.mjs → download-Dx1oyrMg.mjs} +2 -2
  164. package/dist/{download-oFGzg30E.mjs.map → download-Dx1oyrMg.mjs.map} +1 -1
  165. package/dist/{erd-zDoF6I_y.mjs → erd-BNv5Th6z.mjs} +2 -2
  166. package/dist/{erd-zDoF6I_y.mjs.map → erd-BNv5Th6z.mjs.map} +1 -1
  167. package/dist/{erd-lKC5NB2l.cjs → erd-ByuVMQ5n.cjs} +2 -2
  168. package/dist/{erd-lKC5NB2l.cjs.map → erd-ByuVMQ5n.cjs.map} +1 -1
  169. package/dist/{get-CgEgETQa.mjs → get-1TtxSEoT.mjs} +2 -2
  170. package/dist/{get-CgEgETQa.mjs.map → get-1TtxSEoT.mjs.map} +1 -1
  171. package/dist/{get-DjRyK0hJ.cjs → get-B5S1GfjR.cjs} +2 -2
  172. package/dist/{get-DjRyK0hJ.cjs.map → get-B5S1GfjR.cjs.map} +1 -1
  173. package/dist/{get-DDB89cOs.mjs → get-BLDHE_Zl.mjs} +2 -2
  174. package/dist/{get-DDB89cOs.mjs.map → get-BLDHE_Zl.mjs.map} +1 -1
  175. package/dist/{get-KdWfYINc.cjs → get-C5OH05Ka.cjs} +2 -2
  176. package/dist/{get-KdWfYINc.cjs.map → get-C5OH05Ka.cjs.map} +1 -1
  177. package/dist/{get-DwtzBjGV.cjs → get-CKZPn669.cjs} +2 -2
  178. package/dist/{get-DwtzBjGV.cjs.map → get-CKZPn669.cjs.map} +1 -1
  179. package/dist/{get-IOU__2RP.cjs → get-CdDZkUXV.cjs} +2 -2
  180. package/dist/{get-IOU__2RP.cjs.map → get-CdDZkUXV.cjs.map} +1 -1
  181. package/dist/{get-DB80UNSR.mjs → get-Cw4Dw5NG.mjs} +2 -2
  182. package/dist/{get-DB80UNSR.mjs.map → get-Cw4Dw5NG.mjs.map} +1 -1
  183. package/dist/{get-C7dKoSIc.mjs → get-Dy3AD4il.mjs} +2 -2
  184. package/dist/{get-C7dKoSIc.mjs.map → get-Dy3AD4il.mjs.map} +1 -1
  185. package/dist/{get-BBOKSXkh.cjs → get-PVsUGHBR.cjs} +2 -2
  186. package/dist/{get-BBOKSXkh.cjs.map → get-PVsUGHBR.cjs.map} +1 -1
  187. package/dist/{get-B6vBaq_D.mjs → get-Vo3yr12d.mjs} +2 -2
  188. package/dist/{get-B6vBaq_D.mjs.map → get-Vo3yr12d.mjs.map} +1 -1
  189. package/dist/{get-jwXRlIBJ.cjs → get-jaN2o0XY.cjs} +2 -2
  190. package/dist/{get-jwXRlIBJ.cjs.map → get-jaN2o0XY.cjs.map} +1 -1
  191. package/dist/{get-DBxhbN1G.mjs → get-qOKYAc46.mjs} +2 -2
  192. package/dist/{get-DBxhbN1G.mjs.map → get-qOKYAc46.mjs.map} +1 -1
  193. package/dist/init-CPfpVlUN.mjs +372 -0
  194. package/dist/init-CPfpVlUN.mjs.map +1 -0
  195. package/dist/init-NaL2N3Go.cjs +374 -0
  196. package/dist/init-NaL2N3Go.cjs.map +1 -0
  197. package/dist/{invite-DPygtCoO.cjs → invite-Tw3SMV0Q.cjs} +2 -2
  198. package/dist/{invite-DPygtCoO.cjs.map → invite-Tw3SMV0Q.cjs.map} +1 -1
  199. package/dist/{invite-D66DSMvq.mjs → invite-vzajkU2u.mjs} +2 -2
  200. package/dist/{invite-D66DSMvq.mjs.map → invite-vzajkU2u.mjs.map} +1 -1
  201. package/dist/{key-C71Ffll9.mjs → key-CyVxu3Uk.mjs} +3 -3
  202. package/dist/{key-C71Ffll9.mjs.map → key-CyVxu3Uk.mjs.map} +1 -1
  203. package/dist/{key-DQr7qRL2.cjs → key-tRYRqYNo.cjs} +3 -3
  204. package/dist/{key-DQr7qRL2.cjs.map → key-tRYRqYNo.cjs.map} +1 -1
  205. package/dist/{link-BluFyxEL.mjs → link-Bd55x5Zf.mjs} +2 -2
  206. package/dist/{link-BluFyxEL.mjs.map → link-Bd55x5Zf.mjs.map} +1 -1
  207. package/dist/{link-DYu1Vjlw.cjs → link-Cz7MX02S.cjs} +2 -2
  208. package/dist/{link-DYu1Vjlw.cjs.map → link-Cz7MX02S.cjs.map} +1 -1
  209. package/dist/{list-D5PSDMWw.mjs → list-2otVufvs.mjs} +3 -3
  210. package/dist/{list-D5PSDMWw.mjs.map → list-2otVufvs.mjs.map} +1 -1
  211. package/dist/{list-sQk00GV5.mjs → list-BMnBuZMr.mjs} +2 -2
  212. package/dist/{list-sQk00GV5.mjs.map → list-BMnBuZMr.mjs.map} +1 -1
  213. package/dist/{list-BwfpuhmJ.cjs → list-Bo8IMFd0.cjs} +2 -2
  214. package/dist/{list-BwfpuhmJ.cjs.map → list-Bo8IMFd0.cjs.map} +1 -1
  215. package/dist/{list-B0N4-Q-5.mjs → list-BtgAAUKm.mjs} +2 -2
  216. package/dist/{list-B0N4-Q-5.mjs.map → list-BtgAAUKm.mjs.map} +1 -1
  217. package/dist/{list-vbMaOiza.mjs → list-C0lq-gBZ.mjs} +2 -2
  218. package/dist/{list-vbMaOiza.mjs.map → list-C0lq-gBZ.mjs.map} +1 -1
  219. package/dist/{list-BsYYq9wT.mjs → list-CGZ3iT6J.mjs} +2 -2
  220. package/dist/{list-BsYYq9wT.mjs.map → list-CGZ3iT6J.mjs.map} +1 -1
  221. package/dist/{list-CFwW0G9f.cjs → list-CMWXO4nB.cjs} +2 -2
  222. package/dist/{list-CFwW0G9f.cjs.map → list-CMWXO4nB.cjs.map} +1 -1
  223. package/dist/{list-rAn3uOA7.mjs → list-Ccaec0cs.mjs} +2 -2
  224. package/dist/{list-rAn3uOA7.mjs.map → list-Ccaec0cs.mjs.map} +1 -1
  225. package/dist/{list-CU42ERNY.cjs → list-Cp_mHwbN.cjs} +2 -2
  226. package/dist/{list-CU42ERNY.cjs.map → list-Cp_mHwbN.cjs.map} +1 -1
  227. package/dist/{list-D0-QrWmn.cjs → list-Cs7kbAAi.cjs} +3 -3
  228. package/dist/{list-D0-QrWmn.cjs.map → list-Cs7kbAAi.cjs.map} +1 -1
  229. package/dist/{list-DlJssPwy.cjs → list-D5IaYurn.cjs} +2 -2
  230. package/dist/{list-DlJssPwy.cjs.map → list-D5IaYurn.cjs.map} +1 -1
  231. package/dist/{list-CbvEh7eA.mjs → list-DcIBInNA.mjs} +2 -2
  232. package/dist/{list-CbvEh7eA.mjs.map → list-DcIBInNA.mjs.map} +1 -1
  233. package/dist/{list-BzLraBnA.cjs → list-Dd3veD9Z.cjs} +2 -2
  234. package/dist/{list-BzLraBnA.cjs.map → list-Dd3veD9Z.cjs.map} +1 -1
  235. package/dist/{list-DexBclfb.cjs → list-DdVKKaDN.cjs} +2 -2
  236. package/dist/{list-DexBclfb.cjs.map → list-DdVKKaDN.cjs.map} +1 -1
  237. package/dist/{list-Br6Cmi9S.cjs → list-E1sjTZLe.cjs} +2 -2
  238. package/dist/{list-Br6Cmi9S.cjs.map → list-E1sjTZLe.cjs.map} +1 -1
  239. package/dist/{list-BRh59EqI.cjs → list-KI-7REC_.cjs} +2 -2
  240. package/dist/{list-BRh59EqI.cjs.map → list-KI-7REC_.cjs.map} +1 -1
  241. package/dist/{list-ocfd7631.mjs → list-MWD4huKP.mjs} +2 -2
  242. package/dist/{list-ocfd7631.mjs.map → list-MWD4huKP.mjs.map} +1 -1
  243. package/dist/{list-57TUfNFd.mjs → list-Pf5aAoaN.mjs} +2 -2
  244. package/dist/{list-57TUfNFd.mjs.map → list-Pf5aAoaN.mjs.map} +1 -1
  245. package/dist/{list-BHvURTWd.cjs → list-fG4zo8zz.cjs} +2 -2
  246. package/dist/{list-BHvURTWd.cjs.map → list-fG4zo8zz.cjs.map} +1 -1
  247. package/dist/{list-DrZYlidZ.mjs → list-r2UPz1zW.mjs} +2 -2
  248. package/dist/{list-DrZYlidZ.mjs.map → list-r2UPz1zW.mjs.map} +1 -1
  249. package/dist/{login-FE_dbWMo.mjs → login-Dq2L3bI7.mjs} +2 -2
  250. package/dist/{login-FE_dbWMo.mjs.map → login-Dq2L3bI7.mjs.map} +1 -1
  251. package/dist/{login-2XcHd4wn.cjs → login-M1IF2MdC.cjs} +2 -2
  252. package/dist/{login-2XcHd4wn.cjs.map → login-M1IF2MdC.cjs.map} +1 -1
  253. package/dist/{logout-DC5TMJ5_.cjs → logout-BCSfFgPz.cjs} +2 -2
  254. package/dist/{logout-DC5TMJ5_.cjs.map → logout-BCSfFgPz.cjs.map} +1 -1
  255. package/dist/{logout-BDbWrGBm.mjs → logout-DFzQCQKe.mjs} +2 -2
  256. package/dist/{logout-BDbWrGBm.mjs.map → logout-DFzQCQKe.mjs.map} +1 -1
  257. package/dist/management-C1p-Hm2Z.cjs +19 -0
  258. package/dist/{management-BGYcZB4c.cjs.map → management-C1p-Hm2Z.cjs.map} +1 -1
  259. package/dist/{management-DDACMgbU.mjs → management-h4yE09a6.mjs} +5 -5
  260. package/dist/{management-DDACMgbU.mjs.map → management-h4yE09a6.mjs.map} +1 -1
  261. package/dist/object-CZDLoc9L.cjs +20 -0
  262. package/dist/{object-DVqidsEc.cjs.map → object-CZDLoc9L.cjs.map} +1 -1
  263. package/dist/object-CqMsEkh9.mjs +20 -0
  264. package/dist/{object-qdBdEghr.mjs.map → object-CqMsEkh9.mjs.map} +1 -1
  265. package/dist/{org-CPhTRTks.mjs → org-Co-rjfr-.mjs} +2 -2
  266. package/dist/{org-CPhTRTks.mjs.map → org-Co-rjfr-.mjs.map} +1 -1
  267. package/dist/{org-C4cVovOM.cjs → org-Drj3VqIm.cjs} +2 -2
  268. package/dist/{org-C4cVovOM.cjs.map → org-Drj3VqIm.cjs.map} +1 -1
  269. package/dist/{org-context-Bewx2NEW.cjs → org-context-DKFnPH_o.cjs} +2 -2
  270. package/dist/{org-context-Bewx2NEW.cjs.map → org-context-DKFnPH_o.cjs.map} +1 -1
  271. package/dist/{org-context-D0dwWC2M.mjs → org-context-Df5McOiK.mjs} +2 -2
  272. package/dist/{org-context-D0dwWC2M.mjs.map → org-context-Df5McOiK.mjs.map} +1 -1
  273. package/dist/project-C7qWFjMV.mjs +20 -0
  274. package/dist/{project-CaXD3QBs.mjs.map → project-C7qWFjMV.mjs.map} +1 -1
  275. package/dist/project-Dm7nr5NV.cjs +20 -0
  276. package/dist/{project-BX7zvWB1.cjs.map → project-Dm7nr5NV.cjs.map} +1 -1
  277. package/dist/project-user-D9h_QBc0.mjs +20 -0
  278. package/dist/{project-user-Cp7i6orv.mjs.map → project-user-D9h_QBc0.mjs.map} +1 -1
  279. package/dist/project-user-wLFnHFwB.cjs +20 -0
  280. package/dist/{project-user-Dm0qR-sh.cjs.map → project-user-wLFnHFwB.cjs.map} +1 -1
  281. package/dist/prompt-C-XNDSNE.cjs +42 -0
  282. package/dist/prompt-C-XNDSNE.cjs.map +1 -0
  283. package/dist/prompt-Dr2Rkxun.mjs +25 -0
  284. package/dist/prompt-Dr2Rkxun.mjs.map +1 -0
  285. package/dist/{push-D7co0keA.mjs → push-54rmb0T0.mjs} +3 -2
  286. package/dist/{push-D7co0keA.mjs.map → push-54rmb0T0.mjs.map} +1 -1
  287. package/dist/{push-0u6PDz4E.cjs → push-9fPpd4U8.cjs} +4 -3
  288. package/dist/{push-0u6PDz4E.cjs.map → push-9fPpd4U8.cjs.map} +1 -1
  289. package/dist/{run-codegen-DgaFaIQ1.mjs → run-codegen-DjnV60bE.mjs} +3 -3
  290. package/dist/{run-codegen-DgaFaIQ1.mjs.map → run-codegen-DjnV60bE.mjs.map} +1 -1
  291. package/dist/{run-codegen-Ceeosw5x.cjs → run-codegen-mclysZuT.cjs} +3 -3
  292. package/dist/{run-codegen-Ceeosw5x.cjs.map → run-codegen-mclysZuT.cjs.map} +1 -1
  293. package/dist/{run-with-context-CVhmzAFZ.mjs → run-with-context-B4DyI8Wo.mjs} +6 -26
  294. package/dist/run-with-context-B4DyI8Wo.mjs.map +1 -0
  295. package/dist/{run-with-context-DJNnEigg.cjs → run-with-context-D8pSrqD_.cjs} +7 -39
  296. package/dist/run-with-context-D8pSrqD_.cjs.map +1 -0
  297. package/dist/{schema-exG250MU.mjs → schema-BL6SlLtH.mjs} +5 -5
  298. package/dist/{schema-exG250MU.mjs.map → schema-BL6SlLtH.mjs.map} +1 -1
  299. package/dist/schema-CNSTXsVa.cjs +20 -0
  300. package/dist/{schema-B3iRqvYK.cjs.map → schema-CNSTXsVa.cjs.map} +1 -1
  301. package/dist/{status-Dq_NJE71.cjs → status-CqPJTxeK.cjs} +2 -2
  302. package/dist/{status-Dq_NJE71.cjs.map → status-CqPJTxeK.cjs.map} +1 -1
  303. package/dist/{status-fWqXzV0P.mjs → status-D7nOW3R3.mjs} +2 -2
  304. package/dist/{status-fWqXzV0P.mjs.map → status-D7nOW3R3.mjs.map} +1 -1
  305. package/dist/{token-store--9GYVL7N.cjs → token-store-BgWGhqq0.cjs} +3 -3
  306. package/dist/{token-store--9GYVL7N.cjs.map → token-store-BgWGhqq0.cjs.map} +1 -1
  307. package/dist/{token-store-reCGF86F.mjs → token-store-C2r7cFA-.mjs} +2 -2
  308. package/dist/{token-store-reCGF86F.mjs.map → token-store-C2r7cFA-.mjs.map} +1 -1
  309. package/dist/{update-B4lv4dAz.mjs → update-8-sHFvNB.mjs} +2 -2
  310. package/dist/{update-B4lv4dAz.mjs.map → update-8-sHFvNB.mjs.map} +1 -1
  311. package/dist/{update-Dyo4vuZs.mjs → update-B5hKKw0K.mjs} +3 -3
  312. package/dist/{update-Dyo4vuZs.mjs.map → update-B5hKKw0K.mjs.map} +1 -1
  313. package/dist/{update-Do9HHWzs.cjs → update-BVaqURWE.cjs} +2 -2
  314. package/dist/{update-Do9HHWzs.cjs.map → update-BVaqURWE.cjs.map} +1 -1
  315. package/dist/{update-DRnN1kiu.cjs → update-BlUwNhLA.cjs} +2 -2
  316. package/dist/{update-DRnN1kiu.cjs.map → update-BlUwNhLA.cjs.map} +1 -1
  317. package/dist/{update-Cx_2GkQj.cjs → update-BqhLwuP7.cjs} +2 -2
  318. package/dist/{update-Cx_2GkQj.cjs.map → update-BqhLwuP7.cjs.map} +1 -1
  319. package/dist/{update-mEmULIau.mjs → update-DaYjh5VN.mjs} +2 -2
  320. package/dist/{update-mEmULIau.mjs.map → update-DaYjh5VN.mjs.map} +1 -1
  321. package/dist/{update-CJgEmSWJ.cjs → update-DcTzR54Z.cjs} +3 -3
  322. package/dist/{update-CJgEmSWJ.cjs.map → update-DcTzR54Z.cjs.map} +1 -1
  323. package/dist/{update-CIH6sSVk.cjs → update-Dne7g_0s.cjs} +2 -2
  324. package/dist/{update-CIH6sSVk.cjs.map → update-Dne7g_0s.cjs.map} +1 -1
  325. package/dist/{update-CQ4n4Xuf.mjs → update-Dy1BOnTB.mjs} +2 -2
  326. package/dist/{update-CQ4n4Xuf.mjs.map → update-Dy1BOnTB.mjs.map} +1 -1
  327. package/dist/{update-rzij1b_o.mjs → update-slz_X0mG.mjs} +2 -2
  328. package/dist/{update-rzij1b_o.mjs.map → update-slz_X0mG.mjs.map} +1 -1
  329. package/dist/{upload-DGgJ1TQk.mjs → upload-CDtzV9Wx.mjs} +3 -3
  330. package/dist/{upload-DGgJ1TQk.mjs.map → upload-CDtzV9Wx.mjs.map} +1 -1
  331. package/dist/{upload-C43ZXxyb.cjs → upload-DIln1QDA.cjs} +3 -3
  332. package/dist/{upload-C43ZXxyb.cjs.map → upload-DIln1QDA.cjs.map} +1 -1
  333. package/dist/webhook-BT3cHrq5.mjs +20 -0
  334. package/dist/{webhook-CpZ1-Ho5.mjs.map → webhook-BT3cHrq5.mjs.map} +1 -1
  335. package/dist/webhook-CQeuAqec.cjs +20 -0
  336. package/dist/{webhook-CbL4QaR5.cjs.map → webhook-CQeuAqec.cjs.map} +1 -1
  337. package/package.json +6 -5
  338. package/dist/auth-CNbONZuf.cjs +0 -18
  339. package/dist/cms-BJnovGYT.mjs.map +0 -1
  340. package/dist/cms-Cnx-lDGu.cjs.map +0 -1
  341. package/dist/consumer-OF6Z_eTP.cjs.map +0 -1
  342. package/dist/consumer-l-8wUK8E.cjs +0 -18
  343. package/dist/consumer-pU2HyiyA.mjs.map +0 -1
  344. package/dist/content-BOb6NC8M.mjs +0 -20
  345. package/dist/content-DMjSwor1.cjs +0 -20
  346. package/dist/management-BGYcZB4c.cjs +0 -19
  347. package/dist/object-DVqidsEc.cjs +0 -20
  348. package/dist/object-qdBdEghr.mjs +0 -20
  349. package/dist/project-BX7zvWB1.cjs +0 -20
  350. package/dist/project-CaXD3QBs.mjs +0 -20
  351. package/dist/project-user-Cp7i6orv.mjs +0 -20
  352. package/dist/project-user-Dm0qR-sh.cjs +0 -20
  353. package/dist/run-with-context-CVhmzAFZ.mjs.map +0 -1
  354. package/dist/run-with-context-DJNnEigg.cjs.map +0 -1
  355. package/dist/schema-B3iRqvYK.cjs +0 -20
  356. package/dist/webhook-CbL4QaR5.cjs +0 -20
  357. package/dist/webhook-CpZ1-Ho5.mjs +0 -20
@@ -0,0 +1,410 @@
1
+ <!-- source: docs/src/app/features/form/editor/page.mdx -->
2
+
3
+ # フォームエディター
4
+
5
+ フォームエディターは、フォームを直感的に編集するためのツールです。フォームのパーツをドラッグ&ドロップで配置し、設定をカスタマイズできます。編集画面上で実際のフォームをプレビューしながらフォームを作成できます。
6
+
7
+ ![フォームエディター](./features-form-editor.png)
8
+
9
+ フォーム管理機能を使うには、フォームエディターを導入する必要があります。
10
+
11
+ ## インストール
12
+
13
+ フォームエディターを導入するには `@orizm-private/orizm-form-editor` パッケージをインストールします。
14
+
15
+ このパッケージは一般公開されておらず、アクセスするには一定の手順が必要です。インストールを実行する前に [プライベートレジストリ](../../resources/private-registry.md) を参照し、アクセスできるように設定してください。
16
+
17
+ スターターでプロジェクトを開始する場合は最初からインストールされています。既存プロジェクトに導入する場合は、以下の手順でインストールしてください。エディターを提供するCMSと、ページを表示するWebサイトの両方でインストールする必要があります。
18
+
19
+ 以下のコマンドでパッケージをインストールします。
20
+
21
+ ```sh copy
22
+ pnpm add @orizm-private/orizm-form-editor @orizm-private/orizm-editor
23
+ ```
24
+
25
+ ## 使い方
26
+
27
+ ここでは Next.js 15 App Router
28
+ を使用したアプリケーションを例に、フォームエディターをアプリケーションに組み込む方法を説明します。
29
+
30
+ フォームエディターは、CMSとConsumerの両方に組み込む必要があります。CMSにはフォームを編集するためのエディターを実装し、Consumerにはフォームを表示するページを実装します。
31
+
32
+ > [!WARNING]
33
+ > CMS上のエディターでは、Consumer上のフォームをリアルタイムにプレビューしながら編集できます。プレビューは、CMS上にConsumerのプレビューページを
34
+ > iframeで埋め込むことで実現します。そのため、Consumerが**iframeによる表示を許可**している必要があります。
35
+
36
+ ### CMSの実装
37
+
38
+ CMSにフォームを編集するエディターを実装します。
39
+
40
+ #### FormEditorコンポーネントの実装例
41
+
42
+ `<OrizmFormEditorComposer>` コンポーネントを使用して、エディターを実装します。`previewSiteURL` プロパティに、ConsumerのプレビューページのURLを指定します。
43
+
44
+ ```tsx copy filename="components/form-editor.tsx"
45
+ "use client";
46
+
47
+ import "@orizm-private/orizm-editor/editor.css";
48
+ import { type Block, isBlocks } from "@orizm-private/orizm-editor/common";
49
+ import {
50
+ FormEditor as OrizmFormEditor,
51
+ OrizmFormEditorComposer,
52
+ } from "@orizm-private/orizm-form-editor";
53
+ import type { FormValidationRules } from "@orizm-private/orizm-form-editor/rules";
54
+ import { useCallback, useState } from "react";
55
+ import type { Form } from "@/orizm/cms";
56
+ import { cmsClient } from "@/lib/cms-client";
57
+
58
+ type Props = {
59
+ form: Form;
60
+ };
61
+
62
+ export function FormEditor(props: Props) {
63
+ const { id, key, displayName, body, formSchema } = props.form;
64
+
65
+ const [formState, setFormState] = useState<{
66
+ blocks: Block[];
67
+ rules: FormValidationRules;
68
+ }>(() => {
69
+ const blocksData = (body as { blocks: unknown } | null)?.blocks;
70
+ const blocks = isBlocks(blocksData) ? blocksData : [];
71
+ return {
72
+ blocks,
73
+ rules: formSchema,
74
+ };
75
+ });
76
+
77
+ // このハンドラ関数を OrizmFormEditorComposer の onChange プロパティに渡します
78
+ // フォームエディター上での変更を受け取り、stateを更新します
79
+ const onChangeEditor = useCallback(
80
+ (blocks: Block[], rules: FormValidationRules) => {
81
+ setFormState({ blocks, rules });
82
+ },
83
+ [],
84
+ );
85
+
86
+ const onClickSave = useCallback(async () => {
87
+ // CMS SDKを使用してフォームの構造をデータベースに保存します
88
+ await cmsClient.tables.form.update(id, {
89
+ formSchema: formState.rules,
90
+ body: { blocks: formState.blocks },
91
+ });
92
+ }, [id, formState]);
93
+
94
+ return (
95
+ <>
96
+ <button onClick={onClickSave}>フォームを保存</button>
97
+ <OrizmFormEditorComposer
98
+ initialBlocks={formState.blocks}
99
+ onChange={onChangeEditor}
100
+ pageSlug={key}
101
+ pageTitle={displayName}
102
+ previewSiteURL="https://consumer.example.com/form-preview"
103
+ >
104
+ <OrizmFormEditor />
105
+ </OrizmFormEditorComposer>
106
+ </>
107
+ );
108
+ }
109
+ ```
110
+
111
+ #### フォーム編集ページの実装例
112
+
113
+ 先に実装した `<FormEditor>` コンポーネントを使用して、フォームを編集するページを実装します。
114
+
115
+ ```tsx copy filename="page.tsx"
116
+ import { notFound } from "next/navigation";
117
+ import { FormEditor } from "@/components/form-editor";
118
+ import { cmsClient } from "@/lib/cms-client";
119
+
120
+ type Params = {
121
+ params: Promise<{
122
+ form_id: string;
123
+ }>;
124
+ };
125
+
126
+ export default async function FormEditPage(props: Params) {
127
+ const { form_id } = await props.params;
128
+
129
+ const form = await cmsClient.tables.form.get(form_id).catch(() => null);
130
+
131
+ if (!form) {
132
+ return notFound();
133
+ }
134
+
135
+ return <FormEditor form={form} />;
136
+ }
137
+ ```
138
+
139
+ ### Consumerの実装
140
+
141
+ Consumerにフォームをレンダリングするページを実装します。
142
+
143
+ #### 本番ページの実装例
144
+
145
+ `<FormComposer>` コンポーネントを使用して、フォームを表示します。`action` プロパティに、フォーム送信時のエンドポイントを指定します。
146
+
147
+ ```tsx copy filename="app/contact/page.tsx"
148
+ import "@orizm-private/orizm-form-editor/forms.css";
149
+ import { isBlocks } from "@orizm-private/orizm-editor/common";
150
+ import {
151
+ Form,
152
+ FormComponentRenderer,
153
+ FormComposer,
154
+ SubmitButton,
155
+ } from "@orizm-private/orizm-form-editor/renderer";
156
+ import { notFound } from "next/navigation";
157
+ import { cmsClient } from "@/lib/cms-client";
158
+
159
+ export default async function ContactPage() {
160
+ // Consumer SDKを使用してフォームの構造を取得します
161
+ const form = await consumerClient.tables
162
+ .form({ key: "contact" })
163
+ .catch(() => null);
164
+
165
+ if (!form) {
166
+ return notFound();
167
+ }
168
+
169
+ const blocksData = (form.body as { blocks: unknown } | null)?.blocks;
170
+ const blocks = isBlocks(blocksData) ? blocksData : [];
171
+
172
+ return (
173
+ <FormComposer
174
+ formId={form.key}
175
+ blocks={blocks}
176
+ validationRules={form.formSchema}
177
+ isPreview={false}
178
+ hasConfirmation={false}
179
+ action="/contact/submit"
180
+ >
181
+ <Form>
182
+ <FormComponentRenderer />
183
+ </Form>
184
+ <SubmitButton>送信する</SubmitButton>
185
+ </FormComposer>
186
+ );
187
+ }
188
+ ```
189
+
190
+ #### プレビューページの実装例
191
+
192
+ プレビューページは、CMSのフォームエディター上でプレビューを表示するために使用します。
193
+
194
+ プレビューでは `<FormPreviewRenderer>` コンポーネントで `<FormComposer>` コンポーネントをラップします。`editorOrigin` プロパティに、CMSのオリジンを指定します。
195
+
196
+ ```tsx copy filename="app/form-preview/page.tsx"
197
+ import "@orizm-private/orizm-form-editor/forms.css";
198
+
199
+ import { blocksToRules } from "@orizm-private/orizm-form-editor/common";
200
+ import { FormPreviewRenderer } from "@orizm-private/orizm-form-editor/preview";
201
+ import {
202
+ Form,
203
+ FormComposer,
204
+ FormComponentRenderer,
205
+ SubmitButton,
206
+ } from "@orizm-private/orizm-form-editor/renderer";
207
+
208
+ export default function PreviewPage() {
209
+ return (
210
+ <FormPreviewRenderer
211
+ editorOrigin="https://cms.example.com"
212
+ initialBlocks={[]}
213
+ renderForm={(blocks) => (
214
+ <FormComposer
215
+ formId="preview"
216
+ blocks={blocks}
217
+ validationRules={blocksToRules(blocks)}
218
+ isPreview
219
+ action="/contact/submit"
220
+ >
221
+ <Form>
222
+ <FormComponentRenderer />
223
+ </Form>
224
+ <SubmitButton>送信する</SubmitButton>
225
+ </FormComposer>
226
+ )}
227
+ />
228
+ );
229
+ }
230
+ ```
231
+
232
+ #### 送信処理の実装例
233
+
234
+ フォームの送信処理を行うAPIを実装します。リクエストは `POST` メソッドで受け取る必要があります。
235
+
236
+ ```tsx copy filename="app/contact/submit/route.ts"
237
+ import { cmsClient } from "@/lib/cms-client";
238
+
239
+ export async function POST(request: Request): Promise<Response> {
240
+ try {
241
+ const [formData, form] = await Promise.all([
242
+ request.formData(),
243
+ cmsClient.tables.form.getByUnique({ key: "contact" }),
244
+ ]);
245
+
246
+ // CMS SDKを使用して submitForm() でフォームデータを送信します
247
+ await cmsClient.tables.form.submitForm(form.id, formData);
248
+
249
+ // ここで必要に応じて送信者に送信完了メールを送ったり、問い合わせ先に通知する処理を実装します
250
+
251
+ return new Response("Success", { status: 200 });
252
+ } catch (error) {
253
+ console.error(error);
254
+ return new Response("Failed to submit", { status: 500 });
255
+ }
256
+ }
257
+ ```
258
+
259
+ ## ブロック一覧
260
+
261
+ フォームエディタでは、以下のブロックを使用してフォームを構築できます。
262
+
263
+ - テキスト
264
+ - 複数行テキスト
265
+ - メールアドレス
266
+ - 電話番号
267
+ - URL
268
+ - 数値
269
+ - チェックボックス(複数選択)
270
+ - チェックボックス(単一選択)
271
+ - ドロップダウンリスト
272
+ - 日付
273
+ - 日時
274
+ - 時刻
275
+ - ラジオボタン
276
+ - ファイル
277
+
278
+ ## ブロックのスタイル
279
+
280
+ フォームエディタのブロックにはデフォルトのスタイルが適用されているため、そのまま使い始めることができます。もしくは、Webサイトのデザインに合わせてスタイルをカスタマイズできます。
281
+
282
+ カスタマイズするには、 [コンシューマーの実装](#consumerの実装) で使用する `<FormComponentRenderer>` コンポーネントの `components` プロパティにカスタムコンポーネントを指定します。
283
+
284
+ カスタムコンポーネントは必ず `<ComponentMarker>` コンポーネントでラップしてください。ラップしない場合、フォームエディタのプレビュー上でブロックを操作できません。
285
+
286
+ ```tsx copy filename="app/contact/page.tsx" {40-51}
287
+ import "@orizm-private/orizm-form-editor/forms.css";
288
+
289
+ import { isBlocks } from "@orizm-private/orizm-editor/common";
290
+ import {
291
+ Form,
292
+ FormComponentRenderer,
293
+ FormComposer,
294
+ FormErrorMessage,
295
+ FormHelperText,
296
+ FormLabel,
297
+ FormTextInput,
298
+ SubmitButton,
299
+ } from "@orizm-private/orizm-form-editor/renderer";
300
+ import { notFound } from "next/navigation";
301
+ import { cmsClient } from "@/lib/cms-client";
302
+
303
+ export default async function ContactPage() {
304
+ const form = await consumerClient.tables
305
+ .form({ key: "contact" })
306
+ .catch(() => null);
307
+
308
+ if (!form) {
309
+ return notFound();
310
+ }
311
+
312
+ const blocksData = (form.body as { blocks: unknown } | null)?.blocks;
313
+ const blocks = isBlocks(blocksData) ? blocksData : [];
314
+
315
+ return (
316
+ <FormComposer
317
+ formId={form.key}
318
+ blocks={blocks}
319
+ validationRules={form.formSchema}
320
+ isPreview={false}
321
+ hasConfirmation={false}
322
+ action="/contact/submit"
323
+ >
324
+ <Form>
325
+ <FormComponentRenderer
326
+ components={{
327
+ TextInput: (
328
+ <ComponentMarker>
329
+ <div>
330
+ <FormLabel />
331
+ <FormTextInput />
332
+ <FormHelperText />
333
+ <FormErrorMessage />
334
+ </div>
335
+ </ComponentMarker>
336
+ ),
337
+ }}
338
+ />
339
+ </Form>
340
+ <SubmitButton>送信する</SubmitButton>
341
+ </FormComposer>
342
+ );
343
+ }
344
+ ```
345
+
346
+ ## 確認ページを実装する
347
+
348
+ フォームでデータを送信する前に、確認ページを表示してユーザーに入力内容を確認させることができます。
349
+
350
+ `<FormComposer>` コンポーネントを以下のように設定します。
351
+
352
+ - `hasConfirmation` プロパティに `true` を設定
353
+ - `afterSubmit` プロパティに、確認ページへの遷移処理を設定
354
+
355
+ ```tsx copy {3-4}
356
+ // その他のpropsは省略しています
357
+ <FormComposer
358
+ hasConfirmation
359
+ afterSubmit={() => router.push("/contact/confirm")}
360
+ >
361
+ <Form>
362
+ <FormComponentRenderer />
363
+ </Form>
364
+ <SubmitButton>送信する</SubmitButton>
365
+ </FormComposer>
366
+ ```
367
+
368
+ 次に、確認ページを実装します。
369
+
370
+ `useSavedFormData()` フックを使用して、フォームの入力内容を取得します。
371
+
372
+ `<SubmitTemporaryDataButton>` コンポーネントを使用して、フォームの入力内容を送信します。`action` プロパティに送信処理を行うエンドポイントを指定します。`afterSubmit` プロパティを使用すると、サンクスページへの遷移を実装することも可能です。
373
+
374
+ ```tsx copy filename="app/contact/confirm/page.tsx"
375
+ "use client";
376
+
377
+ import {
378
+ SubmitTemporaryDataButton,
379
+ useSavedFormData,
380
+ } from "@orizm-private/orizm-form-editor/renderer";
381
+ import { redirect, useRouter } from "next/navigation";
382
+
383
+ export default function ConfirmPage() {
384
+ const formId = "contact";
385
+
386
+ const router = useRouter();
387
+ const savedData = useSavedFormData(formId);
388
+
389
+ if (savedData.isLoading) {
390
+ return <div>Loading...</div>;
391
+ }
392
+
393
+ if (savedData.data == null) {
394
+ redirect("/contact");
395
+ }
396
+
397
+ return (
398
+ <div>
399
+ <pre>{JSON.stringify(savedData, null, 2)}</pre>
400
+ <SubmitTemporaryDataButton
401
+ formId={formId}
402
+ action="/contact/submit"
403
+ afterSubmit={() => router.push("/contact/thanks")}
404
+ >
405
+ 送信する
406
+ </SubmitTemporaryDataButton>
407
+ </div>
408
+ );
409
+ }
410
+ ```
@@ -0,0 +1,94 @@
1
+ <!-- source: docs/src/app/features/form/submission/page.mdx -->
2
+
3
+ # 受信データの管理
4
+
5
+ フォーム管理機能では、フォームから送信されたデータ(以下、受信データ)を管理できます。
6
+
7
+ ## 受信データのリスト取得
8
+
9
+ 受信データのリストを取得するにはCMS SDKを使用します。
10
+
11
+ フォーム管理機能が有効なテーブルに対して `submissions()` メソッドを呼び出します。これにより、そのフォームに紐づく受信データを扱うクライアントメソッドが使用できます。次に `list()` や `get()` メソッドを呼び出すことで、受信データのリストを取得できます。
12
+
13
+ ```ts copy
14
+ const submissions = await cmsClient.tables.form.submissions(formId).list({
15
+ order: { createdAt: "desc" },
16
+ });
17
+
18
+ console.log(submissions);
19
+ // {
20
+ // "contents": [
21
+ // {
22
+ // "id": "M3nIwgo21UAsZToo",
23
+ // "updatedAt": "2025-01-01T00:00:00.000Z",
24
+ // "createdAt": "2025-01-01T00:00:00.000Z",
25
+ // "_formId": "A8CE7NflEFVT70cK",
26
+ // "_content": {
27
+ // "lastName": "John",
28
+ // "firstName": "Doe",
29
+ // "email": "john.doe@example.com",
30
+ // "body": "This is a test message."
31
+ // },
32
+ // "_formSchema": {
33
+ // "lastName": {
34
+ // "type": "text",
35
+ // "required": true
36
+ // },
37
+ // "firstName": {
38
+ // "type": "text",
39
+ // "required": true
40
+ // },
41
+ // "email": {
42
+ // "type": "text",
43
+ // "required": true
44
+ // },
45
+ // "body": {
46
+ // "type": "textarea",
47
+ // "required": true
48
+ // }
49
+ // },
50
+ // "_attachments": [],
51
+ // "status": "in_progress",
52
+ // "memo": "This is a memo."
53
+ // }
54
+ // ],
55
+ // "totalCount": 1
56
+ // }
57
+ ```
58
+
59
+ 以下、重要なプロパティを示します。
60
+
61
+ ### \_content
62
+
63
+ 受信データの内容です。書き換えることはできません。
64
+
65
+ ### \_formSchema
66
+
67
+ 受信時点でのフォームのスキーマです。書き換えることはできません。
68
+
69
+ ### \_attachments
70
+
71
+ 受信データに紐づく添付ファイルの情報です。書き換えることはできません。
72
+
73
+ [storage型](../schema/database.md#storage) のデータです。ファイルにアクセスするためのURLが含まれています。
74
+
75
+ ## 受信データの更新
76
+
77
+ 受信データを更新するには、`update()` メソッドを使用します。
78
+
79
+ スキーマの [submissionColumns](./about.md#submissioncolumns) で定義したカラムのみ更新できます。
80
+
81
+ ```ts copy
82
+ await cmsClient.tables.form.submissions(formId).update(submissionId, {
83
+ status: "closed",
84
+ memo: "updated memo text",
85
+ });
86
+ ```
87
+
88
+ ## 受信データの削除
89
+
90
+ 受信データを削除するには、`delete()` メソッドを使用します。
91
+
92
+ ```ts copy
93
+ await cmsClient.tables.form.submissions(formId).delete(submissionId);
94
+ ```
@@ -0,0 +1,64 @@
1
+ <!-- source: docs/src/app/features/full-text-search/page.mdx -->
2
+
3
+ # 全文検索
4
+
5
+ 全文検索機能を使用すると、[テーブル](./schema/database.md#テーブル) 上のコンテンツに対してキーワード検索ができます。大量のテキストデータの中から、キーワードに関連するコンテンツを効率的に検索できます。
6
+
7
+ 全文検索機能の特徴は以下の通りです。
8
+
9
+ - 日本語に対応
10
+ - テーブルのデータをキーワードで検索
11
+ - 複数キーワードでの検索に対応
12
+ - Consumer向けの公開データのみを対象とした検索
13
+ - CMS向けの下書きデータを含む検索
14
+
15
+ ## ユースケース例
16
+
17
+ 例えば、求人情報の検索に活用できます。「東京 エンジニア リモートワーク」のように地域名、職種、働き方などのキーワードで検索できます。求職者は希望条件に合った求人情報を直感的に探せます。
18
+
19
+ 他にも、ブログ記事や製品カタログの検索に活用できます。
20
+
21
+ ## 機能の有効化
22
+
23
+ スキーマで [テーブル](./schema/database.md) ごとに有効化できます。`enableSearch` プロパティを `true` に設定します。
24
+
25
+ ```ts copy filename="orizm.config.ts" showLineNumbers {7}
26
+ import { defineConfig } from "@orizm/cli/config";
27
+
28
+ export default defineConfig({
29
+ tables: {
30
+ blog: {
31
+ columns: {},
32
+ enableSearch: true,
33
+ },
34
+ },
35
+ });
36
+ ```
37
+
38
+ ## 検索可能なデータ型
39
+
40
+ 以下のデータ型のカラムに対して全文検索が可能です。
41
+
42
+ - [string](./schema/database.md#string)
43
+ - [json](./schema/database.md#json)
44
+ - [module](./schema/database.md#module)
45
+ - [module-array](./schema/database.md#module-array)
46
+
47
+ ## キーワードで検索する
48
+
49
+ キーワード検索にはSDKの `search()` メソッドを使用します。
50
+
51
+ `query` プロパティに検索キーワードを指定します。複数キーワードの場合は、スペースで区切ります。
52
+
53
+ ```ts copy
54
+ await cmsClient.tables.blog.search({ query: "キーワード1 キーワード2" });
55
+ ```
56
+
57
+ > [!NOTE]
58
+ > `search()` では `filter` パラメータを使用した絞り込みに制約があります。`group`
59
+ > による絞り込みのみ対応しています。
60
+
61
+ このメソッドはCMS SDK、Consumer SDKのどちらでも利用できます。
62
+
63
+ - **Consumer SDK**: 公開データのみ検索可能
64
+ - **CMS SDK**: 下書きデータも検索可能(主にCMS上での管理用途)