@ryanyahya/opendoc 0.4.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 (789) hide show
  1. package/.agents/skills/opendoc-apply-comments/SKILL.md +30 -0
  2. package/.agents/skills/opendoc-apply-comments/agents/openai.yaml +4 -0
  3. package/.agents/skills/opendoc-create/SKILL.md +63 -0
  4. package/.agents/skills/opendoc-create/agents/openai.yaml +6 -0
  5. package/.agents/skills/opendoc-create-template/SKILL.md +50 -0
  6. package/.agents/skills/opendoc-create-template/agents/openai.yaml +4 -0
  7. package/.agents/skills/opendoc-create-template/references/structured-reports.md +11 -0
  8. package/.agents/skills/opendoc-create-theme/SKILL.md +40 -0
  9. package/.agents/skills/opendoc-create-theme/agents/openai.yaml +4 -0
  10. package/.agents/skills/opendoc-current-document/SKILL.md +32 -0
  11. package/.agents/skills/opendoc-current-document/agents/openai.yaml +4 -0
  12. package/.agents/skills/opendoc-current-document/references/context-fields.md +20 -0
  13. package/.agents/skills/opendoc-review-document/SKILL.md +60 -0
  14. package/.agents/skills/opendoc-review-document/agents/openai.yaml +4 -0
  15. package/AGENTS.md +69 -0
  16. package/CONTRIBUTING.md +38 -0
  17. package/LICENSE +21 -0
  18. package/README.md +179 -0
  19. package/SECURITY.md +9 -0
  20. package/THIRD_PARTY.md +49 -0
  21. package/VALIDATION.md +99 -0
  22. package/bin/opendoc.mjs +6 -0
  23. package/dist/assets/Markdown-sNZyjJi7.js +29 -0
  24. package/dist/assets/OpenDocSerif-Regular-D3OXs9A9.ttf +0 -0
  25. package/dist/assets/OpenDocSerif-Semibold-CjL9oDRo.ttf +0 -0
  26. package/dist/assets/geist-latin-ext-wght-italic-XgKbg5n7.woff2 +0 -0
  27. package/dist/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
  28. package/dist/assets/geist-latin-wght-italic-dTnRTFFJ.woff2 +0 -0
  29. package/dist/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
  30. package/dist/assets/index-DdrZ6ozO.css +1 -0
  31. package/dist/assets/index-DgNBz7mL.js +39 -0
  32. package/dist/assets/pdf-B7Emtyld.js +54 -0
  33. package/dist/assets/pdf.worker.min-Dswkl-cV.mjs +29 -0
  34. package/dist/assets/wordmark-DsqLlZpb.png +0 -0
  35. package/dist/index.html +17 -0
  36. package/docs/APPEARANCE.md +21 -0
  37. package/docs/ASSETS.md +176 -0
  38. package/docs/AUTHORING.md +178 -0
  39. package/docs/HEADLESS.md +120 -0
  40. package/docs/MEDIA.md +112 -0
  41. package/docs/PROJECTS.md +55 -0
  42. package/docs/PROSE.md +15 -0
  43. package/docs/SELECTION.md +59 -0
  44. package/docs/TEMPLATES.md +55 -0
  45. package/docs/THEMES.md +106 -0
  46. package/node_modules/@formepdf/core/LICENSE +21 -0
  47. package/node_modules/@formepdf/core/README.md +53 -0
  48. package/node_modules/@formepdf/core/dist/attachments.d.ts +55 -0
  49. package/node_modules/@formepdf/core/dist/attachments.js +59 -0
  50. package/node_modules/@formepdf/core/dist/extract.d.ts +8 -0
  51. package/node_modules/@formepdf/core/dist/extract.js +56 -0
  52. package/node_modules/@formepdf/core/dist/index.d.ts +311 -0
  53. package/node_modules/@formepdf/core/dist/index.js +167 -0
  54. package/node_modules/@formepdf/core/dist/layout.d.ts +132 -0
  55. package/node_modules/@formepdf/core/dist/layout.js +240 -0
  56. package/node_modules/@formepdf/core/dist/shared/browserHelpers.d.ts +19 -0
  57. package/node_modules/@formepdf/core/dist/shared/browserHelpers.js +128 -0
  58. package/node_modules/@formepdf/core/package.json +35 -0
  59. package/node_modules/@formepdf/core/pkg-node/LICENSE +21 -0
  60. package/node_modules/@formepdf/core/pkg-node/README.md +84 -0
  61. package/node_modules/@formepdf/core/pkg-node/forme.d.ts +39 -0
  62. package/node_modules/@formepdf/core/pkg-node/forme.js +394 -0
  63. package/node_modules/@formepdf/core/pkg-node/forme_bg.wasm +0 -0
  64. package/node_modules/@formepdf/core/pkg-node/forme_bg.wasm.d.ts +21 -0
  65. package/node_modules/@formepdf/core/pkg-node/package.json +25 -0
  66. package/node_modules/@formepdf/react/README.md +70 -0
  67. package/node_modules/@formepdf/react/dist/charts.d.ts +72 -0
  68. package/node_modules/@formepdf/react/dist/charts.js +338 -0
  69. package/node_modules/@formepdf/react/dist/components.d.ts +533 -0
  70. package/node_modules/@formepdf/react/dist/components.js +608 -0
  71. package/node_modules/@formepdf/react/dist/expr.d.ts +20 -0
  72. package/node_modules/@formepdf/react/dist/expr.js +39 -0
  73. package/node_modules/@formepdf/react/dist/font.d.ts +2 -0
  74. package/node_modules/@formepdf/react/dist/font.js +1 -0
  75. package/node_modules/@formepdf/react/dist/index.d.ts +11 -0
  76. package/node_modules/@formepdf/react/dist/index.js +15 -0
  77. package/node_modules/@formepdf/react/dist/render.d.ts +12 -0
  78. package/node_modules/@formepdf/react/dist/render.js +15 -0
  79. package/node_modules/@formepdf/react/dist/serialize.d.ts +12 -0
  80. package/node_modules/@formepdf/react/dist/serialize.js +1470 -0
  81. package/node_modules/@formepdf/react/dist/stylesheet.d.ts +4 -0
  82. package/node_modules/@formepdf/react/dist/stylesheet.js +5 -0
  83. package/node_modules/@formepdf/react/dist/template-proxy.d.ts +38 -0
  84. package/node_modules/@formepdf/react/dist/template-proxy.js +100 -0
  85. package/node_modules/@formepdf/react/dist/types.d.ts +287 -0
  86. package/node_modules/@formepdf/react/dist/types.js +1 -0
  87. package/node_modules/@formepdf/react/package.json +41 -0
  88. package/node_modules/@formepdf/shared/README.md +7 -0
  89. package/node_modules/@formepdf/shared/dist/canvas.d.ts +6 -0
  90. package/node_modules/@formepdf/shared/dist/canvas.js +43 -0
  91. package/node_modules/@formepdf/shared/dist/charts.d.ts +100 -0
  92. package/node_modules/@formepdf/shared/dist/charts.js +98 -0
  93. package/node_modules/@formepdf/shared/dist/encode.d.ts +27 -0
  94. package/node_modules/@formepdf/shared/dist/encode.js +93 -0
  95. package/node_modules/@formepdf/shared/dist/font.d.ts +13 -0
  96. package/node_modules/@formepdf/shared/dist/font.js +52 -0
  97. package/node_modules/@formepdf/shared/dist/index.d.ts +10 -0
  98. package/node_modules/@formepdf/shared/dist/index.js +15 -0
  99. package/node_modules/@formepdf/shared/dist/parser.d.ts +30 -0
  100. package/node_modules/@formepdf/shared/dist/parser.js +756 -0
  101. package/node_modules/@formepdf/shared/dist/semantics.d.ts +15 -0
  102. package/node_modules/@formepdf/shared/dist/semantics.js +44 -0
  103. package/node_modules/@formepdf/shared/dist/style.d.ts +7 -0
  104. package/node_modules/@formepdf/shared/dist/style.js +1024 -0
  105. package/node_modules/@formepdf/shared/dist/types.d.ts +743 -0
  106. package/node_modules/@formepdf/shared/dist/types.js +2 -0
  107. package/node_modules/@formepdf/shared/package.json +35 -0
  108. package/node_modules/@types/node/LICENSE +21 -0
  109. package/node_modules/@types/node/README.md +15 -0
  110. package/node_modules/@types/node/assert/strict.d.ts +111 -0
  111. package/node_modules/@types/node/assert.d.ts +1078 -0
  112. package/node_modules/@types/node/async_hooks.d.ts +603 -0
  113. package/node_modules/@types/node/buffer.buffer.d.ts +472 -0
  114. package/node_modules/@types/node/buffer.d.ts +1934 -0
  115. package/node_modules/@types/node/child_process.d.ts +1476 -0
  116. package/node_modules/@types/node/cluster.d.ts +578 -0
  117. package/node_modules/@types/node/compatibility/disposable.d.ts +14 -0
  118. package/node_modules/@types/node/compatibility/index.d.ts +9 -0
  119. package/node_modules/@types/node/compatibility/indexable.d.ts +20 -0
  120. package/node_modules/@types/node/compatibility/iterators.d.ts +20 -0
  121. package/node_modules/@types/node/console.d.ts +452 -0
  122. package/node_modules/@types/node/constants.d.ts +21 -0
  123. package/node_modules/@types/node/crypto.d.ts +4545 -0
  124. package/node_modules/@types/node/dgram.d.ts +600 -0
  125. package/node_modules/@types/node/diagnostics_channel.d.ts +576 -0
  126. package/node_modules/@types/node/dns/promises.d.ts +503 -0
  127. package/node_modules/@types/node/dns.d.ts +923 -0
  128. package/node_modules/@types/node/domain.d.ts +170 -0
  129. package/node_modules/@types/node/events.d.ts +976 -0
  130. package/node_modules/@types/node/fs/promises.d.ts +1306 -0
  131. package/node_modules/@types/node/fs.d.ts +4463 -0
  132. package/node_modules/@types/node/globals.d.ts +172 -0
  133. package/node_modules/@types/node/globals.typedarray.d.ts +38 -0
  134. package/node_modules/@types/node/http.d.ts +2097 -0
  135. package/node_modules/@types/node/http2.d.ts +2843 -0
  136. package/node_modules/@types/node/https.d.ts +579 -0
  137. package/node_modules/@types/node/index.d.ts +98 -0
  138. package/node_modules/@types/node/inspector.d.ts +253 -0
  139. package/node_modules/@types/node/inspector.generated.d.ts +4052 -0
  140. package/node_modules/@types/node/module.d.ts +891 -0
  141. package/node_modules/@types/node/net.d.ts +1076 -0
  142. package/node_modules/@types/node/os.d.ts +506 -0
  143. package/node_modules/@types/node/package.json +145 -0
  144. package/node_modules/@types/node/path.d.ts +200 -0
  145. package/node_modules/@types/node/perf_hooks.d.ts +968 -0
  146. package/node_modules/@types/node/process.d.ts +2084 -0
  147. package/node_modules/@types/node/punycode.d.ts +117 -0
  148. package/node_modules/@types/node/querystring.d.ts +152 -0
  149. package/node_modules/@types/node/readline/promises.d.ts +161 -0
  150. package/node_modules/@types/node/readline.d.ts +594 -0
  151. package/node_modules/@types/node/repl.d.ts +428 -0
  152. package/node_modules/@types/node/sea.d.ts +162 -0
  153. package/node_modules/@types/node/sqlite.d.ts +722 -0
  154. package/node_modules/@types/node/stream/consumers.d.ts +38 -0
  155. package/node_modules/@types/node/stream/promises.d.ts +90 -0
  156. package/node_modules/@types/node/stream/web.d.ts +573 -0
  157. package/node_modules/@types/node/stream.d.ts +1694 -0
  158. package/node_modules/@types/node/string_decoder.d.ts +67 -0
  159. package/node_modules/@types/node/test.d.ts +2265 -0
  160. package/node_modules/@types/node/timers/promises.d.ts +108 -0
  161. package/node_modules/@types/node/timers.d.ts +287 -0
  162. package/node_modules/@types/node/tls.d.ts +1319 -0
  163. package/node_modules/@types/node/trace_events.d.ts +197 -0
  164. package/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +468 -0
  165. package/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +34 -0
  166. package/node_modules/@types/node/ts5.6/index.d.ts +98 -0
  167. package/node_modules/@types/node/tty.d.ts +208 -0
  168. package/node_modules/@types/node/url.d.ts +984 -0
  169. package/node_modules/@types/node/util.d.ts +2606 -0
  170. package/node_modules/@types/node/v8.d.ts +920 -0
  171. package/node_modules/@types/node/vm.d.ts +1053 -0
  172. package/node_modules/@types/node/wasi.d.ts +181 -0
  173. package/node_modules/@types/node/web-globals/abortcontroller.d.ts +34 -0
  174. package/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  175. package/node_modules/@types/node/web-globals/events.d.ts +97 -0
  176. package/node_modules/@types/node/web-globals/fetch.d.ts +55 -0
  177. package/node_modules/@types/node/web-globals/navigator.d.ts +22 -0
  178. package/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  179. package/node_modules/@types/node/web-globals/streams.d.ts +22 -0
  180. package/node_modules/@types/node/worker_threads.d.ts +819 -0
  181. package/node_modules/@types/node/zlib.d.ts +747 -0
  182. package/node_modules/@types/react/LICENSE +21 -0
  183. package/node_modules/@types/react/README.md +15 -0
  184. package/node_modules/@types/react/canary.d.ts +129 -0
  185. package/node_modules/@types/react/compiler-runtime.d.ts +4 -0
  186. package/node_modules/@types/react/experimental.d.ts +184 -0
  187. package/node_modules/@types/react/global.d.ts +166 -0
  188. package/node_modules/@types/react/index.d.ts +4378 -0
  189. package/node_modules/@types/react/jsx-dev-runtime.d.ts +33 -0
  190. package/node_modules/@types/react/jsx-runtime.d.ts +24 -0
  191. package/node_modules/@types/react/package.json +210 -0
  192. package/node_modules/@types/react/ts5.0/canary.d.ts +129 -0
  193. package/node_modules/@types/react/ts5.0/experimental.d.ts +184 -0
  194. package/node_modules/@types/react/ts5.0/global.d.ts +166 -0
  195. package/node_modules/@types/react/ts5.0/index.d.ts +4365 -0
  196. package/node_modules/@types/react/ts5.0/jsx-dev-runtime.d.ts +33 -0
  197. package/node_modules/@types/react/ts5.0/jsx-runtime.d.ts +24 -0
  198. package/node_modules/csstype/LICENSE +19 -0
  199. package/node_modules/csstype/README.md +291 -0
  200. package/node_modules/csstype/index.d.ts +22569 -0
  201. package/node_modules/csstype/index.js.flow +6863 -0
  202. package/node_modules/csstype/package.json +70 -0
  203. package/node_modules/entities/LICENSE +11 -0
  204. package/node_modules/entities/decode.d.ts +1 -0
  205. package/node_modules/entities/decode.js +3 -0
  206. package/node_modules/entities/dist/commonjs/decode-codepoint.d.ts +19 -0
  207. package/node_modules/entities/dist/commonjs/decode-codepoint.d.ts.map +1 -0
  208. package/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
  209. package/node_modules/entities/dist/commonjs/decode-codepoint.js.map +1 -0
  210. package/node_modules/entities/dist/commonjs/decode.d.ts +209 -0
  211. package/node_modules/entities/dist/commonjs/decode.d.ts.map +1 -0
  212. package/node_modules/entities/dist/commonjs/decode.js +511 -0
  213. package/node_modules/entities/dist/commonjs/decode.js.map +1 -0
  214. package/node_modules/entities/dist/commonjs/encode.d.ts +22 -0
  215. package/node_modules/entities/dist/commonjs/encode.d.ts.map +1 -0
  216. package/node_modules/entities/dist/commonjs/encode.js +73 -0
  217. package/node_modules/entities/dist/commonjs/encode.js.map +1 -0
  218. package/node_modules/entities/dist/commonjs/escape.d.ts +43 -0
  219. package/node_modules/entities/dist/commonjs/escape.d.ts.map +1 -0
  220. package/node_modules/entities/dist/commonjs/escape.js +121 -0
  221. package/node_modules/entities/dist/commonjs/escape.js.map +1 -0
  222. package/node_modules/entities/dist/commonjs/generated/decode-data-html.d.ts +2 -0
  223. package/node_modules/entities/dist/commonjs/generated/decode-data-html.d.ts.map +1 -0
  224. package/node_modules/entities/dist/commonjs/generated/decode-data-html.js +10 -0
  225. package/node_modules/entities/dist/commonjs/generated/decode-data-html.js.map +1 -0
  226. package/node_modules/entities/dist/commonjs/generated/decode-data-xml.d.ts +2 -0
  227. package/node_modules/entities/dist/commonjs/generated/decode-data-xml.d.ts.map +1 -0
  228. package/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +10 -0
  229. package/node_modules/entities/dist/commonjs/generated/decode-data-xml.js.map +1 -0
  230. package/node_modules/entities/dist/commonjs/generated/encode-html.d.ts +8 -0
  231. package/node_modules/entities/dist/commonjs/generated/encode-html.d.ts.map +1 -0
  232. package/node_modules/entities/dist/commonjs/generated/encode-html.js +13 -0
  233. package/node_modules/entities/dist/commonjs/generated/encode-html.js.map +1 -0
  234. package/node_modules/entities/dist/commonjs/index.d.ts +96 -0
  235. package/node_modules/entities/dist/commonjs/index.d.ts.map +1 -0
  236. package/node_modules/entities/dist/commonjs/index.js +131 -0
  237. package/node_modules/entities/dist/commonjs/index.js.map +1 -0
  238. package/node_modules/entities/dist/commonjs/package.json +3 -0
  239. package/node_modules/entities/dist/esm/decode-codepoint.d.ts +19 -0
  240. package/node_modules/entities/dist/esm/decode-codepoint.d.ts.map +1 -0
  241. package/node_modules/entities/dist/esm/decode-codepoint.js +72 -0
  242. package/node_modules/entities/dist/esm/decode-codepoint.js.map +1 -0
  243. package/node_modules/entities/dist/esm/decode.d.ts +209 -0
  244. package/node_modules/entities/dist/esm/decode.d.ts.map +1 -0
  245. package/node_modules/entities/dist/esm/decode.js +497 -0
  246. package/node_modules/entities/dist/esm/decode.js.map +1 -0
  247. package/node_modules/entities/dist/esm/encode.d.ts +22 -0
  248. package/node_modules/entities/dist/esm/encode.d.ts.map +1 -0
  249. package/node_modules/entities/dist/esm/encode.js +69 -0
  250. package/node_modules/entities/dist/esm/encode.js.map +1 -0
  251. package/node_modules/entities/dist/esm/escape.d.ts +43 -0
  252. package/node_modules/entities/dist/esm/escape.d.ts.map +1 -0
  253. package/node_modules/entities/dist/esm/escape.js +117 -0
  254. package/node_modules/entities/dist/esm/escape.js.map +1 -0
  255. package/node_modules/entities/dist/esm/generated/decode-data-html.d.ts +2 -0
  256. package/node_modules/entities/dist/esm/generated/decode-data-html.d.ts.map +1 -0
  257. package/node_modules/entities/dist/esm/generated/decode-data-html.js +7 -0
  258. package/node_modules/entities/dist/esm/generated/decode-data-html.js.map +1 -0
  259. package/node_modules/entities/dist/esm/generated/decode-data-xml.d.ts +2 -0
  260. package/node_modules/entities/dist/esm/generated/decode-data-xml.d.ts.map +1 -0
  261. package/node_modules/entities/dist/esm/generated/decode-data-xml.js +7 -0
  262. package/node_modules/entities/dist/esm/generated/decode-data-xml.js.map +1 -0
  263. package/node_modules/entities/dist/esm/generated/encode-html.d.ts +8 -0
  264. package/node_modules/entities/dist/esm/generated/encode-html.d.ts.map +1 -0
  265. package/node_modules/entities/dist/esm/generated/encode-html.js +10 -0
  266. package/node_modules/entities/dist/esm/generated/encode-html.js.map +1 -0
  267. package/node_modules/entities/dist/esm/index.d.ts +96 -0
  268. package/node_modules/entities/dist/esm/index.d.ts.map +1 -0
  269. package/node_modules/entities/dist/esm/index.js +107 -0
  270. package/node_modules/entities/dist/esm/index.js.map +1 -0
  271. package/node_modules/entities/dist/esm/package.json +3 -0
  272. package/node_modules/entities/escape.d.ts +1 -0
  273. package/node_modules/entities/escape.js +3 -0
  274. package/node_modules/entities/package.json +118 -0
  275. package/node_modules/entities/readme.md +122 -0
  276. package/node_modules/entities/src/decode-codepoint.ts +81 -0
  277. package/node_modules/entities/src/decode.spec.ts +320 -0
  278. package/node_modules/entities/src/decode.ts +620 -0
  279. package/node_modules/entities/src/encode.spec.ts +78 -0
  280. package/node_modules/entities/src/encode.ts +77 -0
  281. package/node_modules/entities/src/escape.spec.ts +14 -0
  282. package/node_modules/entities/src/escape.ts +148 -0
  283. package/node_modules/entities/src/generated/.eslintrc.json +10 -0
  284. package/node_modules/entities/src/generated/decode-data-html.ts +8 -0
  285. package/node_modules/entities/src/generated/decode-data-xml.ts +8 -0
  286. package/node_modules/entities/src/generated/encode-html.ts +17 -0
  287. package/node_modules/entities/src/index.spec.ts +125 -0
  288. package/node_modules/entities/src/index.ts +188 -0
  289. package/node_modules/parse5/LICENSE +19 -0
  290. package/node_modules/parse5/README.md +38 -0
  291. package/node_modules/parse5/dist/cjs/common/doctype.d.ts +4 -0
  292. package/node_modules/parse5/dist/cjs/common/doctype.js +118 -0
  293. package/node_modules/parse5/dist/cjs/common/error-codes.d.ts +67 -0
  294. package/node_modules/parse5/dist/cjs/common/error-codes.js +66 -0
  295. package/node_modules/parse5/dist/cjs/common/foreign-content.d.ts +9 -0
  296. package/node_modules/parse5/dist/cjs/common/foreign-content.js +237 -0
  297. package/node_modules/parse5/dist/cjs/common/html.d.ts +289 -0
  298. package/node_modules/parse5/dist/cjs/common/html.js +528 -0
  299. package/node_modules/parse5/dist/cjs/common/token.d.ts +84 -0
  300. package/node_modules/parse5/dist/cjs/common/token.js +24 -0
  301. package/node_modules/parse5/dist/cjs/common/unicode.d.ts +42 -0
  302. package/node_modules/parse5/dist/cjs/common/unicode.js +70 -0
  303. package/node_modules/parse5/dist/cjs/index.d.ts +71 -0
  304. package/node_modules/parse5/dist/cjs/index.js +54 -0
  305. package/node_modules/parse5/dist/cjs/package.json +1 -0
  306. package/node_modules/parse5/dist/cjs/parser/formatting-element-list.d.ts +36 -0
  307. package/node_modules/parse5/dist/cjs/parser/formatting-element-list.js +114 -0
  308. package/node_modules/parse5/dist/cjs/parser/index.d.ts +221 -0
  309. package/node_modules/parse5/dist/cjs/parser/index.js +3240 -0
  310. package/node_modules/parse5/dist/cjs/parser/open-element-stack.d.ts +53 -0
  311. package/node_modules/parse5/dist/cjs/parser/open-element-stack.js +328 -0
  312. package/node_modules/parse5/dist/cjs/serializer/index.d.ts +60 -0
  313. package/node_modules/parse5/dist/cjs/serializer/index.js +172 -0
  314. package/node_modules/parse5/dist/cjs/tokenizer/index.d.ts +247 -0
  315. package/node_modules/parse5/dist/cjs/tokenizer/index.js +2714 -0
  316. package/node_modules/parse5/dist/cjs/tokenizer/preprocessor.d.ts +36 -0
  317. package/node_modules/parse5/dist/cjs/tokenizer/preprocessor.js +200 -0
  318. package/node_modules/parse5/dist/cjs/tree-adapters/default.d.ts +84 -0
  319. package/node_modules/parse5/dist/cjs/tree-adapters/default.js +176 -0
  320. package/node_modules/parse5/dist/cjs/tree-adapters/interface.d.ts +255 -0
  321. package/node_modules/parse5/dist/cjs/tree-adapters/interface.js +2 -0
  322. package/node_modules/parse5/dist/common/doctype.d.ts +4 -0
  323. package/node_modules/parse5/dist/common/doctype.js +114 -0
  324. package/node_modules/parse5/dist/common/error-codes.d.ts +67 -0
  325. package/node_modules/parse5/dist/common/error-codes.js +63 -0
  326. package/node_modules/parse5/dist/common/foreign-content.d.ts +9 -0
  327. package/node_modules/parse5/dist/common/foreign-content.js +228 -0
  328. package/node_modules/parse5/dist/common/html.d.ts +289 -0
  329. package/node_modules/parse5/dist/common/html.js +523 -0
  330. package/node_modules/parse5/dist/common/token.d.ts +84 -0
  331. package/node_modules/parse5/dist/common/token.js +20 -0
  332. package/node_modules/parse5/dist/common/unicode.d.ts +42 -0
  333. package/node_modules/parse5/dist/common/unicode.js +62 -0
  334. package/node_modules/parse5/dist/index.d.ts +71 -0
  335. package/node_modules/parse5/dist/index.js +42 -0
  336. package/node_modules/parse5/dist/parser/formatting-element-list.d.ts +36 -0
  337. package/node_modules/parse5/dist/parser/formatting-element-list.js +110 -0
  338. package/node_modules/parse5/dist/parser/index.d.ts +221 -0
  339. package/node_modules/parse5/dist/parser/index.js +3245 -0
  340. package/node_modules/parse5/dist/parser/open-element-stack.d.ts +53 -0
  341. package/node_modules/parse5/dist/parser/open-element-stack.js +324 -0
  342. package/node_modules/parse5/dist/serializer/index.d.ts +60 -0
  343. package/node_modules/parse5/dist/serializer/index.js +168 -0
  344. package/node_modules/parse5/dist/tokenizer/index.d.ts +247 -0
  345. package/node_modules/parse5/dist/tokenizer/index.js +2710 -0
  346. package/node_modules/parse5/dist/tokenizer/preprocessor.d.ts +36 -0
  347. package/node_modules/parse5/dist/tokenizer/preprocessor.js +196 -0
  348. package/node_modules/parse5/dist/tree-adapters/default.d.ts +84 -0
  349. package/node_modules/parse5/dist/tree-adapters/default.js +173 -0
  350. package/node_modules/parse5/dist/tree-adapters/interface.d.ts +255 -0
  351. package/node_modules/parse5/dist/tree-adapters/interface.js +1 -0
  352. package/node_modules/parse5/package.json +50 -0
  353. package/node_modules/undici-types/LICENSE +21 -0
  354. package/node_modules/undici-types/README.md +6 -0
  355. package/node_modules/undici-types/agent.d.ts +31 -0
  356. package/node_modules/undici-types/api.d.ts +43 -0
  357. package/node_modules/undici-types/balanced-pool.d.ts +29 -0
  358. package/node_modules/undici-types/cache.d.ts +36 -0
  359. package/node_modules/undici-types/client.d.ts +108 -0
  360. package/node_modules/undici-types/connector.d.ts +34 -0
  361. package/node_modules/undici-types/content-type.d.ts +21 -0
  362. package/node_modules/undici-types/cookies.d.ts +28 -0
  363. package/node_modules/undici-types/diagnostics-channel.d.ts +66 -0
  364. package/node_modules/undici-types/dispatcher.d.ts +256 -0
  365. package/node_modules/undici-types/env-http-proxy-agent.d.ts +21 -0
  366. package/node_modules/undici-types/errors.d.ts +149 -0
  367. package/node_modules/undici-types/eventsource.d.ts +61 -0
  368. package/node_modules/undici-types/fetch.d.ts +209 -0
  369. package/node_modules/undici-types/file.d.ts +39 -0
  370. package/node_modules/undici-types/filereader.d.ts +54 -0
  371. package/node_modules/undici-types/formdata.d.ts +108 -0
  372. package/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  373. package/node_modules/undici-types/global-origin.d.ts +7 -0
  374. package/node_modules/undici-types/handlers.d.ts +15 -0
  375. package/node_modules/undici-types/header.d.ts +4 -0
  376. package/node_modules/undici-types/index.d.ts +71 -0
  377. package/node_modules/undici-types/interceptors.d.ts +17 -0
  378. package/node_modules/undici-types/mock-agent.d.ts +50 -0
  379. package/node_modules/undici-types/mock-client.d.ts +25 -0
  380. package/node_modules/undici-types/mock-errors.d.ts +12 -0
  381. package/node_modules/undici-types/mock-interceptor.d.ts +93 -0
  382. package/node_modules/undici-types/mock-pool.d.ts +25 -0
  383. package/node_modules/undici-types/package.json +55 -0
  384. package/node_modules/undici-types/patch.d.ts +33 -0
  385. package/node_modules/undici-types/pool-stats.d.ts +19 -0
  386. package/node_modules/undici-types/pool.d.ts +39 -0
  387. package/node_modules/undici-types/proxy-agent.d.ts +28 -0
  388. package/node_modules/undici-types/readable.d.ts +65 -0
  389. package/node_modules/undici-types/retry-agent.d.ts +8 -0
  390. package/node_modules/undici-types/retry-handler.d.ts +116 -0
  391. package/node_modules/undici-types/util.d.ts +18 -0
  392. package/node_modules/undici-types/webidl.d.ts +228 -0
  393. package/node_modules/undici-types/websocket.d.ts +150 -0
  394. package/package.json +80 -0
  395. package/scripts/rebuild-forme.mjs +61 -0
  396. package/src/app/AppearanceControl.tsx +44 -0
  397. package/src/app/AssetThemeDefaults.tsx +87 -0
  398. package/src/app/AssetsBrowser.tsx +273 -0
  399. package/src/app/CommentDock.tsx +108 -0
  400. package/src/app/CreateDocumentDialog.tsx +51 -0
  401. package/src/app/DocumentActions.tsx +69 -0
  402. package/src/app/DocumentCard.tsx +50 -0
  403. package/src/app/DocumentViewControl.tsx +31 -0
  404. package/src/app/DocumentsBrowser.tsx +70 -0
  405. package/src/app/ExportHistoryDialog.tsx +86 -0
  406. package/src/app/ExportMenu.tsx +127 -0
  407. package/src/app/GuideDialog.tsx +80 -0
  408. package/src/app/InspectionLayer.tsx +77 -0
  409. package/src/app/LogoUploadDialog.tsx +92 -0
  410. package/src/app/Markdown.tsx +34 -0
  411. package/src/app/MaterialsBrowser.tsx +149 -0
  412. package/src/app/PageNumberInput.tsx +56 -0
  413. package/src/app/Pdf.tsx +561 -0
  414. package/src/app/ProjectDialogs.tsx +100 -0
  415. package/src/app/Reader.tsx +769 -0
  416. package/src/app/SearchField.tsx +13 -0
  417. package/src/app/Sidebar.tsx +86 -0
  418. package/src/app/SkillIndex.tsx +30 -0
  419. package/src/app/TemplatesBrowser.tsx +149 -0
  420. package/src/app/ThemesBrowser.tsx +159 -0
  421. package/src/app/api.ts +47 -0
  422. package/src/app/appearance.ts +35 -0
  423. package/src/app/assets.css +139 -0
  424. package/src/app/catalogPreview.ts +20 -0
  425. package/src/app/colors.css +167 -0
  426. package/src/app/comment-dock.css +53 -0
  427. package/src/app/commentDrafts.ts +67 -0
  428. package/src/app/componentCorrection.ts +17 -0
  429. package/src/app/edit-workbench.css +87 -0
  430. package/src/app/editSession.ts +238 -0
  431. package/src/app/editorRecovery.ts +25 -0
  432. package/src/app/export-history.css +31 -0
  433. package/src/app/export.css +17 -0
  434. package/src/app/guideLinks.ts +21 -0
  435. package/src/app/guides.css +40 -0
  436. package/src/app/main.tsx +221 -0
  437. package/src/app/materials.css +53 -0
  438. package/src/app/pdfLoading.ts +12 -0
  439. package/src/app/pdfSelection.ts +112 -0
  440. package/src/app/projects.css +63 -0
  441. package/src/app/reader-toolbar.css +65 -0
  442. package/src/app/selection.css +150 -0
  443. package/src/app/sidebar.css +60 -0
  444. package/src/app/skills.css +7 -0
  445. package/src/app/style.css +1061 -0
  446. package/src/app/templates.css +49 -0
  447. package/src/app/themes.css +80 -0
  448. package/src/app/ui/Icon.tsx +92 -0
  449. package/src/app/ui/README.md +27 -0
  450. package/src/app/ui/fonts.css +36 -0
  451. package/src/app/ui/index.tsx +223 -0
  452. package/src/app/ui/ui.css +388 -0
  453. package/src/app/useReaderPreview.ts +19 -0
  454. package/src/app/useTextEditing.ts +155 -0
  455. package/src/assets/adapter.ts +122 -0
  456. package/src/assets/files.ts +378 -0
  457. package/src/assets/import-worker.ts +294 -0
  458. package/src/assets/imports.ts +124 -0
  459. package/src/assets/index.ts +60 -0
  460. package/src/assets/store.ts +798 -0
  461. package/src/assets/usage.ts +118 -0
  462. package/src/cli/check.ts +25 -0
  463. package/src/cli/init.ts +119 -0
  464. package/src/cli/lock.ts +34 -0
  465. package/src/cli/main.ts +118 -0
  466. package/src/cli/process.ts +19 -0
  467. package/src/cli/start.ts +96 -0
  468. package/src/cli/update.ts +348 -0
  469. package/src/cli/workspace.ts +94 -0
  470. package/src/document/index.tsx +641 -0
  471. package/src/document/page.tsx +53 -0
  472. package/src/document/text-targets.tsx +162 -0
  473. package/src/media/files.ts +124 -0
  474. package/src/media/render.ts +63 -0
  475. package/src/rendering/resolve-sources.ts +84 -0
  476. package/src/runtime/jsx-dev-runtime.ts +2 -0
  477. package/src/runtime/jsx-runtime.ts +2 -0
  478. package/src/runtime/paths.ts +12 -0
  479. package/src/server/assets-cli.ts +162 -0
  480. package/src/server/assets-http.ts +100 -0
  481. package/src/server/client.ts +50 -0
  482. package/src/server/clipboard.ts +22 -0
  483. package/src/server/comments-cli.ts +64 -0
  484. package/src/server/comments.ts +130 -0
  485. package/src/server/create-cli.ts +33 -0
  486. package/src/server/create.ts +228 -0
  487. package/src/server/dependencies.ts +91 -0
  488. package/src/server/documents.ts +143 -0
  489. package/src/server/edits.ts +249 -0
  490. package/src/server/export-batch.ts +105 -0
  491. package/src/server/export-errors.ts +2 -0
  492. package/src/server/export-file.ts +57 -0
  493. package/src/server/export-inputs.ts +66 -0
  494. package/src/server/export-preview.ts +69 -0
  495. package/src/server/export.ts +32 -0
  496. package/src/server/exports.ts +283 -0
  497. package/src/server/files.ts +21 -0
  498. package/src/server/guides.ts +71 -0
  499. package/src/server/index.ts +432 -0
  500. package/src/server/materials.ts +39 -0
  501. package/src/server/media-cli.ts +73 -0
  502. package/src/server/media-mutations.ts +168 -0
  503. package/src/server/pptx.ts +160 -0
  504. package/src/server/preflight.ts +129 -0
  505. package/src/server/projects-cli.ts +29 -0
  506. package/src/server/projects.ts +187 -0
  507. package/src/server/render-error.ts +9 -0
  508. package/src/server/render-source.ts +24 -0
  509. package/src/server/render.ts +48 -0
  510. package/src/server/review-cli.ts +40 -0
  511. package/src/server/review.ts +161 -0
  512. package/src/server/selection.ts +23 -0
  513. package/src/server/source-overrides.ts +97 -0
  514. package/src/server/templates-cli.ts +51 -0
  515. package/src/server/templates.ts +186 -0
  516. package/src/server/text-layout.ts +41 -0
  517. package/src/server/text-source.ts +307 -0
  518. package/src/server/themes-cli.ts +59 -0
  519. package/src/server/themes.ts +215 -0
  520. package/src/server/ttf2eot.d.ts +3 -0
  521. package/src/server/worker.ts +166 -0
  522. package/src/server/workspace.ts +242 -0
  523. package/src/shared/anchors.ts +69 -0
  524. package/src/shared/assets.ts +154 -0
  525. package/src/shared/export.ts +34 -0
  526. package/src/shared/media.ts +33 -0
  527. package/src/shared/projects.ts +19 -0
  528. package/src/shared/selection.ts +94 -0
  529. package/src/shared/skill-index.ts +14 -0
  530. package/src/shared/starters.ts +19 -0
  531. package/src/shared/templates.ts +18 -0
  532. package/src/shared/themes.ts +24 -0
  533. package/src/shared/types.ts +39 -0
  534. package/src/template/index.ts +27 -0
  535. package/src/themes/index.ts +3 -0
  536. package/src/themes/neutral.ts +20 -0
  537. package/src/themes/types.ts +110 -0
  538. package/starter/assets/brand/wordmark.png +0 -0
  539. package/starter/assets/fonts/InterUI-LICENSE.txt +93 -0
  540. package/starter/assets/fonts/InterUI-Medium.ttf +0 -0
  541. package/starter/assets/fonts/InterUI-Regular.ttf +0 -0
  542. package/starter/assets/fonts/InterUI-source.json +19 -0
  543. package/starter/assets/fonts/OpenDocMono-Regular.ttf +0 -0
  544. package/starter/assets/fonts/OpenDocSans-Italic.ttf +0 -0
  545. package/starter/assets/fonts/OpenDocSans-Regular.ttf +0 -0
  546. package/starter/assets/fonts/OpenDocSans-Semibold.ttf +0 -0
  547. package/starter/assets/fonts/OpenDocSans-SemiboldItalic.ttf +0 -0
  548. package/starter/assets/fonts/OpenDocSerif-Italic.ttf +0 -0
  549. package/starter/assets/fonts/OpenDocSerif-Regular.ttf +0 -0
  550. package/starter/assets/fonts/OpenDocSerif-Semibold.ttf +0 -0
  551. package/starter/assets/fonts/OpenDocSerif-SemiboldItalic.ttf +0 -0
  552. package/starter/assets/fonts/SourceCode-LICENSE.md +93 -0
  553. package/starter/assets/fonts/SourceSans-LICENSE.md +93 -0
  554. package/starter/assets/fonts/SourceSerif-LICENSE.md +93 -0
  555. package/starter/assets/fonts/geist/OFL.txt +93 -0
  556. package/starter/assets/fonts/geist/asset.json +7 -0
  557. package/starter/assets/fonts/geist/files/1a9874b3be0fc168692a3d2327bccb4d28835653d3b91537a755296a467a83e3.ttf +0 -0
  558. package/starter/assets/fonts/geist/files/a8eefb873ba9c9020665f8a98302697ce1f3b79ab2deef6ee508c0ca6a82e876.ttf +0 -0
  559. package/starter/assets/fonts/geist/files/ccce59465ae5c61930ada5453834f60500fbd95084d85db63e0e65fad0125455.ttf +0 -0
  560. package/starter/assets/fonts/geist/files/f5e95110d70593672515080bee9148463ada0a7f77b89ed65a3d43cb2b0ff83a.pdf +0 -0
  561. package/starter/assets/fonts/geist/revisions/9a2bc12fb2f23cb27bc227087e63e1407bb804ee0586480bd6b7966ec69fb474.json +60 -0
  562. package/starter/assets/fonts/inter/OFL.txt +93 -0
  563. package/starter/assets/fonts/inter/asset.json +7 -0
  564. package/starter/assets/fonts/inter/files/1b08e7fc267a5c7e1d614100f604b83e7e8a0be241f0f288faa2b3ac93a683ba.ttf +0 -0
  565. package/starter/assets/fonts/inter/files/5b6f0c6f26e5c554a64cdcc3a9b5d802b7f9aec6206f1dbcfcdcad7b5860a2a9.ttf +0 -0
  566. package/starter/assets/fonts/inter/files/957db8560d510a198a7d0333fae7b6b444b00c20801581126273978d778eb3c3.pdf +0 -0
  567. package/starter/assets/fonts/inter/files/b37284b5701b6b168dfc770aa1a4ac492106422fd3ba76bc7641e37434e8019c.ttf +0 -0
  568. package/starter/assets/fonts/inter/files/c1811d32ac0f6eed1bbf57529f2ecdfc6c717d48a969dd864942436315a1b198.ttf +0 -0
  569. package/starter/assets/fonts/inter/files/e7a1aaf7eda9f2fad4131725fa556265ec75ca7b2d756260173a040363e8d4f7.ttf +0 -0
  570. package/starter/assets/fonts/inter/files/ef8f755d933b9310804cc9152f1f18cb2ac460d6b05054ec913d889c9f11f79e.ttf +0 -0
  571. package/starter/assets/fonts/inter/revisions/600391517c413963b71e278a57c26c40366c81fa3939a6b9755f446206766d12.json +99 -0
  572. package/starter/assets/fonts/inter/source.json +57 -0
  573. package/starter/assets/fonts/lato/OFL.txt +93 -0
  574. package/starter/assets/fonts/lato/asset.json +7 -0
  575. package/starter/assets/fonts/lato/files/4a6b566dbb28adb473a8789ce5169306f42f0c8a070ac92bae93636f36348b0d.pdf +0 -0
  576. package/starter/assets/fonts/lato/files/5adeb6b334d8fb99ef053bc052b952773d544315e0e1d668a12c0ce8bd51375c.ttf +0 -0
  577. package/starter/assets/fonts/lato/files/62c1b7f0d2e74b45960154c3520efc337b553db0961bfdc950d5618334596cc8.ttf +0 -0
  578. package/starter/assets/fonts/lato/files/71b8b7decbe75a881ed267be539d402bd1e9420b799658aada4e0d1bd5af803c.ttf +0 -0
  579. package/starter/assets/fonts/lato/files/8a0aace75d33794eece4b28187bfc1df0bbd2888b5d8a56e01788c8d65d16be1.ttf +0 -0
  580. package/starter/assets/fonts/lato/files/d636e4683231f931eda222d588e944d082bfd3bdba02f928bee461c0f185b251.ttf +0 -0
  581. package/starter/assets/fonts/lato/files/e399c44efe1387100531d26c7e4800c5d12251b890d6654a3098c7c679cb1786.ttf +0 -0
  582. package/starter/assets/fonts/lato/revisions/49ccb93400a9d466fab7d9843b1ecf8916ec6d47a475dd79a597a22eb39616bc.json +99 -0
  583. package/starter/assets/fonts/lato/source.json +57 -0
  584. package/starter/assets/fonts/merriweather/OFL.txt +93 -0
  585. package/starter/assets/fonts/merriweather/asset.json +7 -0
  586. package/starter/assets/fonts/merriweather/files/1c54f91b910454251c4c2b7bd4e472e1abf265fba7ca3c0ef2eee2f41324099e.ttf +0 -0
  587. package/starter/assets/fonts/merriweather/files/8bde8da2bb7f0265e27ba0481f70bb48d0f98a976c145f2f239c648ddd6532e0.pdf +0 -0
  588. package/starter/assets/fonts/merriweather/files/90b7db4460fcd1a5ca49575c2668a793f3cd6447664d312a068d690e1c01e6bc.ttf +0 -0
  589. package/starter/assets/fonts/merriweather/files/afff81272b7653417bb6f8bef57add055b1f9fda36f27eba5f32b40752bd08da.ttf +0 -0
  590. package/starter/assets/fonts/merriweather/files/e029d3b71e5bae3877c73f4f2b15af28db16593d49b0aed2a328d37ff7075846.ttf +0 -0
  591. package/starter/assets/fonts/merriweather/files/e9864a6790bf712a04e20f3662b206a1535186ed3e877fd859dd5fb9682335df.ttf +0 -0
  592. package/starter/assets/fonts/merriweather/files/fa71baebdd20a7d0de2e5e445a5922530fe9e1d740efbe791f113b682d3cb093.ttf +0 -0
  593. package/starter/assets/fonts/merriweather/revisions/1888e390b3e4f38a3d7cd2dc1bb805aeb6ce13f986a97656f0265fd436bc91d2.json +99 -0
  594. package/starter/assets/fonts/merriweather/source.json +57 -0
  595. package/starter/assets/fonts/open-sans/OFL.txt +92 -0
  596. package/starter/assets/fonts/open-sans/asset.json +7 -0
  597. package/starter/assets/fonts/open-sans/files/1bc0594a83762b2c25d38915a34464b7fec6088298ca22d151757bf98d6700ec.ttf +0 -0
  598. package/starter/assets/fonts/open-sans/files/47ed1cfaa7ffca04a04ab850b2938fd52c09d1b44cfa3e2980878e166b0cbd87.ttf +0 -0
  599. package/starter/assets/fonts/open-sans/files/574939af301f07df8e21cfff279465c5981dd9d9cf62086f7515897df951c6f5.pdf +0 -0
  600. package/starter/assets/fonts/open-sans/files/6d3884d0d57c1b67e9c50c54eca7b69c535c114e76bd7a9cfda0258588185553.ttf +0 -0
  601. package/starter/assets/fonts/open-sans/files/733eb93b167e6d45de09aa768f6c0355647c2c26f5416dbc7407a08ed41e81c6.ttf +0 -0
  602. package/starter/assets/fonts/open-sans/files/75367e6da7d914eaed87883ba51b2a2b5816b5cdbb39f96ec5c81a5b032bfd5a.ttf +0 -0
  603. package/starter/assets/fonts/open-sans/files/ff4fdc11204e0edd14e9a0bb6c374b847a9093b0ec2c16702e03afca79ac4ef7.ttf +0 -0
  604. package/starter/assets/fonts/open-sans/revisions/bbbe3a4915b9bccbc883c0decb4097511c43b6bd09ae22a1516aff128c219bc5.json +99 -0
  605. package/starter/assets/fonts/open-sans/source.json +57 -0
  606. package/starter/assets/fonts/roboto/OFL.txt +93 -0
  607. package/starter/assets/fonts/roboto/asset.json +7 -0
  608. package/starter/assets/fonts/roboto/files/22d45d989248a624252b8382067ac56550212fa675dcdbaf12f03d297dd87a58.pdf +0 -0
  609. package/starter/assets/fonts/roboto/files/35757eaa996b3359022f47f164a67ee9eac04971af24c5b8fbd4b89e844ff190.ttf +0 -0
  610. package/starter/assets/fonts/roboto/files/4d3035883c531846bd1ce2dc89f36d932e72dc114f56062c7e3a9cdd74f3d3ea.ttf +0 -0
  611. package/starter/assets/fonts/roboto/files/be7639306a4fc4a02ce2ae2ff59eb1335e4db4a7379dd0a384ed7cc053817789.ttf +0 -0
  612. package/starter/assets/fonts/roboto/files/d2920cbb1b60a3fd11fbf22049286e43a6baf522d37fdf1e7c89562319bcfea5.ttf +0 -0
  613. package/starter/assets/fonts/roboto/files/dece7c71bbe61710787f0839c722c65e87355dd2eb4a823e6b5488121ff81e4b.ttf +0 -0
  614. package/starter/assets/fonts/roboto/files/f478ba88b0292e685e487901dfbb1401457d32d6ebee4030cdfd5698235bffa8.ttf +0 -0
  615. package/starter/assets/fonts/roboto/revisions/bda5e2d84c17313373dd2dbf3e64fe0dd450c7e1b59e6929e69557e122fe976e.json +99 -0
  616. package/starter/assets/fonts/roboto/source.json +57 -0
  617. package/starter/assets/logos/opendoc/asset.json +6 -0
  618. package/starter/assets/logos/opendoc/files/831d5ccd9eb6709cc8439ea257c03d81452e81a28a3d1eedbd6a3b7daff687b6.png +0 -0
  619. package/starter/assets/logos/opendoc/revisions/834dde8926ddb81de687254195a168bb13bfb77803307f1257de1f2228be63b2.json +33 -0
  620. package/starter/assets/ui-fonts/geist/OFL.txt +93 -0
  621. package/starter/assets/ui-fonts/geist/geist-latin-ext-wght-italic.woff2 +0 -0
  622. package/starter/assets/ui-fonts/geist/geist-latin-ext-wght-normal.woff2 +0 -0
  623. package/starter/assets/ui-fonts/geist/geist-latin-wght-italic.woff2 +0 -0
  624. package/starter/assets/ui-fonts/geist/geist-latin-wght-normal.woff2 +0 -0
  625. package/starter/assets/ui-fonts/geist/source.json +26 -0
  626. package/starter/documents/welcome/assets.json +7 -0
  627. package/starter/documents/welcome/index.tsx +160 -0
  628. package/starter/documents/welcome/media/.gitkeep +0 -0
  629. package/starter/documents/welcome/media/paper-architecture/image.png +0 -0
  630. package/starter/documents/welcome/media/paper-architecture/meta.json +9 -0
  631. package/starter/documents/welcome/media/paper-architecture/prompt.txt +1 -0
  632. package/starter/documents/welcome/media/studio-rhythm/chart.svg +2343 -0
  633. package/starter/documents/welcome/media/studio-rhythm/data.json +234 -0
  634. package/starter/documents/welcome/media/studio-rhythm/generation.json +9 -0
  635. package/starter/documents/welcome/media/studio-rhythm/image.png +0 -0
  636. package/starter/documents/welcome/media/studio-rhythm/meta.json +11 -0
  637. package/starter/documents/welcome/media/studio-rhythm/recipe.py +79 -0
  638. package/starter/documents/welcome/theme.tsx +5 -0
  639. package/starter/documents/welcome-presentation/assets.json +7 -0
  640. package/starter/documents/welcome-presentation/index.tsx +166 -0
  641. package/starter/documents/welcome-presentation/media/.gitkeep +0 -0
  642. package/starter/documents/welcome-presentation/media/paper-architecture/image.png +0 -0
  643. package/starter/documents/welcome-presentation/media/paper-architecture/meta.json +9 -0
  644. package/starter/documents/welcome-presentation/media/paper-architecture/prompt.txt +1 -0
  645. package/starter/documents/welcome-presentation/media/studio-rhythm/chart.svg +1336 -0
  646. package/starter/documents/welcome-presentation/media/studio-rhythm/data.json +234 -0
  647. package/starter/documents/welcome-presentation/media/studio-rhythm/generation.json +9 -0
  648. package/starter/documents/welcome-presentation/media/studio-rhythm/image.png +0 -0
  649. package/starter/documents/welcome-presentation/media/studio-rhythm/meta.json +13 -0
  650. package/starter/documents/welcome-presentation/media/studio-rhythm/recipe.py +49 -0
  651. package/starter/documents/welcome-presentation/theme.tsx +5 -0
  652. package/starter/projects.json +17 -0
  653. package/starter/templates/AGENTS.md +9 -0
  654. package/starter/templates/_shared/BusinessLogo.tsx +14 -0
  655. package/starter/templates/_shared/Pricing.tsx +40 -0
  656. package/starter/templates/_shared/commerce.ts +93 -0
  657. package/starter/templates/brand-guidelines/AGENTS.md +32 -0
  658. package/starter/templates/brand-guidelines/index.tsx +62 -0
  659. package/starter/templates/brand-guidelines/preview.tsx +181 -0
  660. package/starter/templates/brand-guidelines/starter.tsx +179 -0
  661. package/starter/templates/brand-guidelines/template.json +15 -0
  662. package/starter/templates/business-proposal/AGENTS.md +13 -0
  663. package/starter/templates/business-proposal/README.md +36 -0
  664. package/starter/templates/business-proposal/data.json +37 -0
  665. package/starter/templates/business-proposal/examples/long.json +142 -0
  666. package/starter/templates/business-proposal/examples/sparse.json +17 -0
  667. package/starter/templates/business-proposal/examples/typical.json +37 -0
  668. package/starter/templates/business-proposal/index.tsx +59 -0
  669. package/starter/templates/business-proposal/preview.tsx +47 -0
  670. package/starter/templates/business-proposal/schema.ts +14 -0
  671. package/starter/templates/business-proposal/starter.tsx +18 -0
  672. package/starter/templates/business-proposal/template.json +11 -0
  673. package/starter/templates/company-profile/AGENTS.md +48 -0
  674. package/starter/templates/company-profile/index.tsx +69 -0
  675. package/starter/templates/company-profile/preview.tsx +185 -0
  676. package/starter/templates/company-profile/starter.tsx +186 -0
  677. package/starter/templates/company-profile/template.json +15 -0
  678. package/starter/templates/consulting-report/AGENTS.md +11 -0
  679. package/starter/templates/consulting-report/README.md +13 -0
  680. package/starter/templates/consulting-report/RESEARCH.md +10 -0
  681. package/starter/templates/consulting-report/index.tsx +44 -0
  682. package/starter/templates/consulting-report/preview.tsx +39 -0
  683. package/starter/templates/consulting-report/starter.tsx +15 -0
  684. package/starter/templates/consulting-report/template.json +11 -0
  685. package/starter/templates/editorial-essay/AGENTS.md +11 -0
  686. package/starter/templates/editorial-essay/README.md +11 -0
  687. package/starter/templates/editorial-essay/index.tsx +30 -0
  688. package/starter/templates/editorial-essay/preview.tsx +26 -0
  689. package/starter/templates/editorial-essay/starter.tsx +15 -0
  690. package/starter/templates/editorial-essay/template.json +11 -0
  691. package/starter/templates/executive-brief/AGENTS.md +9 -0
  692. package/starter/templates/executive-brief/README.md +11 -0
  693. package/starter/templates/executive-brief/index.tsx +33 -0
  694. package/starter/templates/executive-brief/preview.tsx +37 -0
  695. package/starter/templates/executive-brief/starter.tsx +11 -0
  696. package/starter/templates/executive-brief/template.json +11 -0
  697. package/starter/templates/image-story/AGENTS.md +37 -0
  698. package/starter/templates/image-story/index.tsx +106 -0
  699. package/starter/templates/image-story/preview.tsx +33 -0
  700. package/starter/templates/image-story/starter.tsx +24 -0
  701. package/starter/templates/image-story/template.json +13 -0
  702. package/starter/templates/invoice/AGENTS.md +13 -0
  703. package/starter/templates/invoice/README.md +40 -0
  704. package/starter/templates/invoice/data.json +61 -0
  705. package/starter/templates/invoice/examples/long.json +241 -0
  706. package/starter/templates/invoice/examples/sparse.json +33 -0
  707. package/starter/templates/invoice/examples/typical.json +61 -0
  708. package/starter/templates/invoice/index.tsx +57 -0
  709. package/starter/templates/invoice/preview.tsx +12 -0
  710. package/starter/templates/invoice/schema.ts +45 -0
  711. package/starter/templates/invoice/starter.tsx +12 -0
  712. package/starter/templates/invoice/template.json +11 -0
  713. package/starter/templates/literary-text/AGENTS.md +9 -0
  714. package/starter/templates/literary-text/README.md +11 -0
  715. package/starter/templates/literary-text/index.tsx +31 -0
  716. package/starter/templates/literary-text/preview.tsx +20 -0
  717. package/starter/templates/literary-text/starter.tsx +11 -0
  718. package/starter/templates/literary-text/template.json +11 -0
  719. package/starter/templates/magazine-feature/AGENTS.md +11 -0
  720. package/starter/templates/magazine-feature/README.md +13 -0
  721. package/starter/templates/magazine-feature/index.tsx +41 -0
  722. package/starter/templates/magazine-feature/preview.tsx +34 -0
  723. package/starter/templates/magazine-feature/starter.tsx +15 -0
  724. package/starter/templates/magazine-feature/template.json +11 -0
  725. package/starter/templates/monthly-report/AGENTS.md +11 -0
  726. package/starter/templates/monthly-report/README.md +24 -0
  727. package/starter/templates/monthly-report/data.json +131 -0
  728. package/starter/templates/monthly-report/examples/long.json +519 -0
  729. package/starter/templates/monthly-report/examples/sparse.json +20 -0
  730. package/starter/templates/monthly-report/examples/typical.json +37 -0
  731. package/starter/templates/monthly-report/index.tsx +92 -0
  732. package/starter/templates/monthly-report/preview.tsx +14 -0
  733. package/starter/templates/monthly-report/schema.ts +127 -0
  734. package/starter/templates/monthly-report/starter.tsx +13 -0
  735. package/starter/templates/monthly-report/template.json +11 -0
  736. package/starter/templates/pitch-deck/AGENTS.md +32 -0
  737. package/starter/templates/pitch-deck/index.tsx +46 -0
  738. package/starter/templates/pitch-deck/preview.tsx +142 -0
  739. package/starter/templates/pitch-deck/starter.tsx +140 -0
  740. package/starter/templates/pitch-deck/template.json +15 -0
  741. package/starter/templates/proposal-deck/AGENTS.md +25 -0
  742. package/starter/templates/proposal-deck/index.tsx +52 -0
  743. package/starter/templates/proposal-deck/preview.tsx +172 -0
  744. package/starter/templates/proposal-deck/starter.tsx +168 -0
  745. package/starter/templates/proposal-deck/template.json +7 -0
  746. package/starter/templates/quotation/AGENTS.md +13 -0
  747. package/starter/templates/quotation/README.md +42 -0
  748. package/starter/templates/quotation/data.json +64 -0
  749. package/starter/templates/quotation/examples/long.json +272 -0
  750. package/starter/templates/quotation/examples/sparse.json +31 -0
  751. package/starter/templates/quotation/examples/typical.json +64 -0
  752. package/starter/templates/quotation/index.tsx +51 -0
  753. package/starter/templates/quotation/preview.tsx +12 -0
  754. package/starter/templates/quotation/schema.ts +27 -0
  755. package/starter/templates/quotation/starter.tsx +12 -0
  756. package/starter/templates/quotation/template.json +11 -0
  757. package/starter/templates/scientific-paper/AGENTS.md +11 -0
  758. package/starter/templates/scientific-paper/README.md +13 -0
  759. package/starter/templates/scientific-paper/index.tsx +47 -0
  760. package/starter/templates/scientific-paper/preview.tsx +43 -0
  761. package/starter/templates/scientific-paper/starter.tsx +15 -0
  762. package/starter/templates/scientific-paper/template.json +11 -0
  763. package/starter/themes/Specimen.tsx +54 -0
  764. package/starter/themes/civic-spectrum/components.tsx +92 -0
  765. package/starter/themes/civic-spectrum/design.md +70 -0
  766. package/starter/themes/civic-spectrum/index.ts +57 -0
  767. package/starter/themes/civic-spectrum/preview.tsx +66 -0
  768. package/starter/themes/field-manual/components.tsx +106 -0
  769. package/starter/themes/field-manual/design.md +72 -0
  770. package/starter/themes/field-manual/index.ts +57 -0
  771. package/starter/themes/field-manual/preview.tsx +82 -0
  772. package/starter/themes/index.ts +3 -0
  773. package/starter/themes/mckinsey-consulting/components.tsx +69 -0
  774. package/starter/themes/mckinsey-consulting/design.md +68 -0
  775. package/starter/themes/mckinsey-consulting/index.ts +60 -0
  776. package/starter/themes/mckinsey-consulting/preview.tsx +53 -0
  777. package/starter/themes/neutral/design.md +35 -0
  778. package/starter/themes/neutral/index.ts +21 -0
  779. package/starter/themes/neutral/preview.tsx +4 -0
  780. package/starter/themes/opendoc-neutral/components.tsx +77 -0
  781. package/starter/themes/opendoc-neutral/design.md +70 -0
  782. package/starter/themes/opendoc-neutral/index.ts +54 -0
  783. package/starter/themes/opendoc-neutral/preview.tsx +43 -0
  784. package/starter/themes/types.ts +3 -0
  785. package/tsconfig.workspace.json +24 -0
  786. package/vendor/formepdf/LICENSE +21 -0
  787. package/vendor/formepdf/README.md +97 -0
  788. package/vendor/formepdf/font-subset.patch +228 -0
  789. package/vendor/formepdf/text-writer.patch +507 -0
@@ -0,0 +1,140 @@
1
+ import { PitchDeck, PitchSlide, PitchText, PitchPanel, PitchImage } from '../../templates/pitch-deck';
2
+ // @ts-ignore The selected local theme module is inserted when this starter becomes a document.
3
+ import { theme } from "__OPENDOC_THEME_MODULE__";
4
+
5
+ const title = "__OPENDOC_TITLE__";
6
+ export const meta = { title, description:'A venture pitch. Replace all prompts with supported company material.', kind:'pitch deck', theme:"__OPENDOC_THEME__" };
7
+ export const provenance = {template:'templates/pitch-deck/index.tsx'};
8
+
9
+ // This is your editable story, not a required slide order. Keep stable IDs when reordering.
10
+ // Add managed image={{item:'your-media-id'}} to a PitchImage after importing and reviewing media.
11
+ // Sources, dates and assumptions belong beside the relevant evidence. Move detail to explicit appendix slides.
12
+ export default function Deck() {
13
+ return <PitchDeck title={title} theme={theme}>
14
+ <PitchSlide id="purpose" theme={theme} dark eyebrow="COMPANY PURPOSE" footer="[Founder name] / [Contact] / [Date]">
15
+ <PitchText id="company-name" theme={theme} x={48} y={108} w={680} h={150} body={title} role="display" size={64} weight={600} color={theme.paper}/>
16
+ <PitchText id="company-promise" theme={theme} x={48} y={290} w={720} h={112} body="We help [specific customer] achieve [valuable outcome]." size={32} color={theme.paper}/>
17
+ <PitchText id="round-context" theme={theme} x={48} y={448} w={760} h={30} body="[Fundraising stage] / One plain sentence. No category jargon." size={16} color={theme.paper}/>
18
+ </PitchSlide>
19
+
20
+ <PitchSlide id="problem" theme={theme} eyebrow="THE CUSTOMER PAIN" title="A real person. An expensive problem." footer="Evidence placeholder: source, date and customer context.">
21
+ <PitchText id="customer-situation" theme={theme} x={48} y={186} w={390} h={90} body="[Customer] struggles to [important job]." role="display" size={32} weight={600}/>
22
+ <PitchText id="customer-consequence" theme={theme} x={48} y={312} w={360} h={118} body="Describe the cost of the current workaround in time, money or lost opportunity." size={23}/>
23
+ <PitchPanel id="pain-evidence-panel" theme={theme} dark x={492} y={177} w={420} h={291}/>
24
+ <PitchText id="pain-evidence-label" theme={theme} x={524} y={208} w={356} h={25} body="VOICE OF THE CUSTOMER" role="label" size={11} color={theme.paper}/>
25
+ <PitchText id="pain-evidence" theme={theme} x={524} y={258} w={350} h={128} body="[A short, permissioned customer quote or measured observation.]" size={28} color={theme.paper}/>
26
+ <PitchText id="pain-attribution" theme={theme} x={524} y={425} w={350} h={25} body="[Attribution / study / interview date]" size={13} color={theme.paper}/>
27
+ </PitchSlide>
28
+
29
+ <PitchSlide id="solution" theme={theme} eyebrow="THE SOLUTION" title="Show the change your product makes." footer="Replace these prompts with one concrete customer outcome.">
30
+ <PitchPanel id="before-panel" theme={theme} rule x={48} y={178} w={416} h={286}/>
31
+ <PitchPanel id="after-panel" theme={theme} dark x={484} y={178} w={428} h={286}/>
32
+ <PitchText id="before-label" theme={theme} x={76} y={205} w={360} h={24} body="TODAY" role="label" size={12}/>
33
+ <PitchText id="before-outcome" theme={theme} x={76} y={252} w={360} h={110} body="[The frustrating status quo]" role="display" size={34} weight={600}/>
34
+ <PitchText id="before-detail" theme={theme} x={76} y={390} w={360} h={52} body="Describe the workaround, not a straw man." size={18}/>
35
+ <PitchText id="after-label" theme={theme} x={512} y={205} w={372} h={24} body="WITH YOUR PRODUCT" role="label" size={12} color={theme.paper}/>
36
+ <PitchText id="after-outcome" theme={theme} x={512} y={252} w={372} h={110} body="[A clear, valuable improvement]" role="display" size={34} weight={600} color={theme.paper}/>
37
+ <PitchText id="after-detail" theme={theme} x={512} y={390} w={372} h={52} body="Explain the unique insight that makes it possible." size={18} color={theme.paper}/>
38
+ </PitchSlide>
39
+
40
+ <PitchSlide id="product" theme={theme} eyebrow="THE PRODUCT" title="Make the experience immediately clear." footer="Product visual placeholder. Show the real experience; label concept work as a concept.">
41
+ <PitchImage id="product-visual" theme={theme} x={48} y={175} w={558} h={291} label="Product demonstration" detail="Use one cropped product view, physical product photograph or simplified demonstration."/>
42
+ <PitchText id="product-first" theme={theme} x={646} y={188} w={266} h={70} body="01 [Start with the customer's action]" size={23} weight={600}/>
43
+ <PitchText id="product-second" theme={theme} x={646} y={286} w={266} h={70} body="02 [Show the useful transformation]" size={23} weight={600}/>
44
+ <PitchText id="product-third" theme={theme} x={646} y={384} w={266} h={70} body="03 [End with the result]" size={23} weight={600}/>
45
+ </PitchSlide>
46
+
47
+ <PitchSlide id="why-now" theme={theme} dark eyebrow="WHY NOW" footer="Evidence placeholder: dates and sources for the enabling changes.">
48
+ <PitchText id="timing-claim" theme={theme} x={48} y={96} w={820} h={148} body={"What changed\nthat makes this possible now?"} role="display" size={53} weight={600} color={theme.paper}/>
49
+ <PitchText id="timing-shift" theme={theme} x={48} y={302} w={254} h={122} body={"[Technology shift]\nWhat became possible?"} size={25} color={theme.paper}/>
50
+ <PitchText id="timing-behavior" theme={theme} x={350} y={302} w={254} h={122} body={"[Behavior shift]\nWhat do customers now expect?"} size={25} color={theme.paper}/>
51
+ <PitchText id="timing-window" theme={theme} x={652} y={302} w={260} h={122} body={"[Market opening]\nWhy act in this window?"} size={25} color={theme.paper}/>
52
+ </PitchSlide>
53
+
54
+ <PitchSlide id="traction" theme={theme} eyebrow="TRACTION / VALIDATION" title="Lead with your strongest honest evidence." footer="Evidence placeholder: unit, period, cohort, source and whether observed or estimated.">
55
+ <PitchText id="traction-primary" theme={theme} x={48} y={190} w={304} h={93} body="[Metric]" role="display" size={60} weight={600}/>
56
+ <PitchText id="traction-definition" theme={theme} x={48} y={302} w={294} h={100} body="State what it measures and why it shows customers value the product." size={23}/>
57
+ <PitchText id="traction-stage-note" theme={theme} x={48} y={426} w={294} h={45} body="Pre-launch? Use validated learning or committed pilots." size={14}/>
58
+ <PitchImage id="traction-chart" theme={theme} x={400} y={180} w={512} h={285} label="Evidence chart or customer proof" detail="Add actual data with readable axes and a period. No invented growth curve."/>
59
+ </PitchSlide>
60
+
61
+ <PitchSlide id="market" theme={theme} eyebrow="MARKET POTENTIAL" title="Start with a customer you can actually reach." footer="Sizing placeholder: show source dates, assumptions, calculation and currency.">
62
+ <PitchText id="market-beachhead" theme={theme} x={48} y={177} w={830} h={55} body="[Specific initial customer segment + geography]" size={27} weight={600}/>
63
+ <PitchPanel id="market-formula-panel" theme={theme} dark x={48} y={255} w={864} h={122}/>
64
+ <PitchText id="market-count" theme={theme} x={76} y={276} w={244} h={77} body={"[Customers]\nReachable accounts"} size={24} color={theme.paper}/>
65
+ <PitchText id="market-multiply" theme={theme} x={338} y={289} w={40} h={50} body="×" size={36} color={theme.paper}/>
66
+ <PitchText id="market-value" theme={theme} x={398} y={276} w={224} h={77} body={"[Annual value]\nPer account"} size={24} color={theme.paper}/>
67
+ <PitchText id="market-equals" theme={theme} x={640} y={289} w={40} h={50} body="=" size={36} color={theme.paper}/>
68
+ <PitchText id="market-result" theme={theme} x={704} y={276} w={180} h={77} body={"[Market]\nAnnual value"} size={24} color={theme.paper}/>
69
+ <PitchText id="market-expansion" theme={theme} x={48} y={415} w={850} h={52} body="Then explain the credible path into adjacent customers or new uses." size={23}/>
70
+ </PitchSlide>
71
+
72
+ <PitchSlide id="business-model" theme={theme} eyebrow="BUSINESS MODEL" title="Who pays, for what, and why it works." footer="Economics placeholder: separate measured performance from assumptions.">
73
+ <PitchPanel id="business-pricing-panel" theme={theme} dark x={48} y={178} w={328} h={288}/>
74
+ <PitchText id="business-pricing-label" theme={theme} x={76} y={206} w={270} h={25} body="PRICING UNIT" role="label" size={12} color={theme.paper}/>
75
+ <PitchText id="business-pricing" theme={theme} x={76} y={256} w={270} h={116} body={"[Price]\nper [unit]"} role="display" size={42} weight={600} color={theme.paper}/>
76
+ <PitchText id="business-payer" theme={theme} x={76} y={404} w={270} h={42} body="[Buyer / budget owner]" size={19} color={theme.paper}/>
77
+ <PitchText id="business-value" theme={theme} x={424} y={192} w={472} h={98} body={"[Why this is worth paying for]\nConnect price with the buyer's value."} size={25} weight={600}/>
78
+ <PitchText id="business-economics" theme={theme} x={424} y={326} w={472} h={125} body={"[Economics that matter]\nExplain cost to serve, margin or repeat behavior using the measures relevant to your business."} size={23}/>
79
+ </PitchSlide>
80
+
81
+ <PitchSlide id="go-to-market" theme={theme} eyebrow="GO TO MARKET" title="A focused route to the first repeatable growth." footer="Channel evidence placeholder. Distinguish tested acquisition from the plan.">
82
+ <PitchText id="gtm-entry-label" theme={theme} x={48} y={185} w={252} h={40} body="01 / FIND" role="label" size={15}/>
83
+ <PitchText id="gtm-entry" theme={theme} x={48} y={247} w={252} h={170} body={"[Entry channel]\nWhere does your first audience already gather?"} size={25}/>
84
+ <PitchText id="gtm-convert-label" theme={theme} x={352} y={185} w={252} h={40} body="02 / CONVERT" role="label" size={15}/>
85
+ <PitchText id="gtm-convert" theme={theme} x={352} y={247} w={252} h={170} body={"[First value moment]\nWhat moves a prospect from interest into use?"} size={25}/>
86
+ <PitchText id="gtm-repeat-label" theme={theme} x={656} y={185} w={256} h={40} body="03 / REPEAT" role="label" size={15}/>
87
+ <PitchText id="gtm-repeat" theme={theme} x={656} y={247} w={256} h={170} body={"[Repeatable engine]\nWhat evidence makes you believe this can scale?"} size={25}/>
88
+ <PitchText id="gtm-learning" theme={theme} x={48} y={438} w={850} h={36} body="[One next experiment and the success criterion that earns more investment.]" size={18}/>
89
+ </PitchSlide>
90
+
91
+ <PitchSlide id="alternatives" theme={theme} eyebrow="COMPETITION / ALTERNATIVES" title="Show the trade-off that lets you win." footer="Comparison placeholder: verify alternatives, criteria and dates. Include doing nothing.">
92
+ <PitchText id="alternatives-column" theme={theme} x={48} y={174} w={254} h={27} body="CUSTOMER CHOICE" role="label" size={11}/>
93
+ <PitchText id="alternatives-strength-column" theme={theme} x={348} y={174} w={242} h={27} body="WHY THEY CHOOSE IT" role="label" size={11}/>
94
+ <PitchText id="alternatives-gap-column" theme={theme} x={642} y={174} w={270} h={27} body="WHERE YOU DIFFER" role="label" size={11}/>
95
+ <PitchPanel id="alternatives-current-rule" theme={theme} rule x={48} y={211} w={864} h={1}/>
96
+ <PitchText id="alternatives-current" theme={theme} x={48} y={228} w={254} h={65} body="[Current workaround]" size={23} weight={600}/>
97
+ <PitchText id="alternatives-current-strength" theme={theme} x={348} y={228} w={242} h={65} body="[Its genuine strength]" size={21}/>
98
+ <PitchText id="alternatives-current-gap" theme={theme} x={642} y={228} w={270} h={65} body="[Your relevant advantage]" size={21}/>
99
+ <PitchPanel id="alternatives-direct-rule" theme={theme} rule x={48} y={307} w={864} h={1}/>
100
+ <PitchText id="alternatives-direct" theme={theme} x={48} y={326} w={254} h={65} body="[Direct competitor]" size={23} weight={600}/>
101
+ <PitchText id="alternatives-direct-strength" theme={theme} x={348} y={326} w={242} h={65} body="[Its genuine strength]" size={21}/>
102
+ <PitchText id="alternatives-direct-gap" theme={theme} x={642} y={326} w={270} h={65} body="[Your relevant advantage]" size={21}/>
103
+ <PitchText id="alternatives-durability" theme={theme} x={48} y={429} w={840} h={47} body="[Explain why the advantage can endure as alternatives improve.]" size={22} weight={600}/>
104
+ </PitchSlide>
105
+
106
+ <PitchSlide id="team" theme={theme} eyebrow="THE TEAM" title="Why this team is right for this problem." footer="Team placeholders. Include relevant experience and real roles; use permissioned portraits.">
107
+ <PitchImage id="founder-one-portrait" theme={theme} x={48} y={178} w={178} h={180} label="Founder portrait"/>
108
+ <PitchImage id="founder-two-portrait" theme={theme} x={354} y={178} w={178} h={180} label="Founder portrait"/>
109
+ <PitchText id="founder-one-name" theme={theme} x={48} y={381} w={274} h={42} body="[Name / role]" size={25} weight={600}/>
110
+ <PitchText id="founder-one-fit" theme={theme} x={48} y={428} w={274} h={52} body="[One specific reason this person belongs here.]" size={18}/>
111
+ <PitchText id="founder-two-name" theme={theme} x={354} y={381} w={274} h={42} body="[Name / role]" size={25} weight={600}/>
112
+ <PitchText id="founder-two-fit" theme={theme} x={354} y={428} w={274} h={52} body="[One specific reason this person belongs here.]" size={18}/>
113
+ <PitchPanel id="team-insight-panel" theme={theme} dark x={660} y={178} w={252} h={302}/>
114
+ <PitchText id="team-insight" theme={theme} x={686} y={212} w={200} h={226} body={"[The earned insight]\nWhat have you learned together that others miss?"} size={28} color={theme.paper}/>
115
+ </PitchSlide>
116
+
117
+ <PitchSlide id="financial-position" theme={theme} eyebrow="FINANCIAL POSITION" title="Make the current position easy to understand." footer="Financial placeholders: currency, as-of date, period and basis. Label projections explicitly.">
118
+ <PitchText id="financial-actuals-label" theme={theme} x={48} y={185} w={386} h={26} body="ACTUALS / AS OF [DATE]" role="label" size={12}/>
119
+ <PitchText id="financial-actuals" theme={theme} x={48} y={238} w={386} h={184} body={"[Revenue, if any]\n[Cash and burn]\n[Runway at current plan]"} size={29}/>
120
+ <PitchPanel id="financial-plan-panel" theme={theme} rule x={484} y={177} w={428} h={287}/>
121
+ <PitchText id="financial-plan-label" theme={theme} x={512} y={205} w={372} h={26} body="PLAN / KEY ASSUMPTIONS" role="label" size={12}/>
122
+ <PitchText id="financial-plan" theme={theme} x={512} y={258} w={372} h={149} body={"[What drives the model]\nName the assumptions that matter and the next evidence needed."} size={27}/>
123
+ <PitchText id="financial-detail" theme={theme} x={48} y={441} w={386} h={38} body="Put detailed schedules in an appendix." size={17}/>
124
+ </PitchSlide>
125
+
126
+ <PitchSlide id="funding-ask" theme={theme} eyebrow="THE RAISE" title="Fund the next proof point." footer="Funding placeholders: currency, intended runway, milestone dates and dependencies.">
127
+ <PitchText id="raise-amount" theme={theme} x={48} y={185} w={348} h={120} body={"[Raise\namount]"} role="display" size={48} weight={600}/>
128
+ <PitchText id="raise-purpose" theme={theme} x={48} y={344} w={328} h={112} body={"[Runway / use of funds]\nExplain what this capital allows you to prove."} size={24}/>
129
+ <PitchText id="milestone-product" theme={theme} x={452} y={190} w={460} h={74} body={"01 [Product milestone]\n[Success criterion + target date]"} size={23}/>
130
+ <PitchText id="milestone-market" theme={theme} x={452} y={293} w={460} h={74} body={"02 [Customer milestone]\n[Success criterion + target date]"} size={23}/>
131
+ <PitchText id="milestone-business" theme={theme} x={452} y={396} w={460} h={74} body={"03 [Business milestone]\n[Success criterion + target date]"} size={23}/>
132
+ </PitchSlide>
133
+
134
+ <PitchSlide id="vision" theme={theme} dark eyebrow="THE VISION" footer="[Founder name] / [Email] / [Website]">
135
+ <PitchText id="vision-promise" theme={theme} x={48} y={106} w={822} h={220} body={"If this works,\nwhat becomes possible?"} role="display" size={62} weight={600} color={theme.paper}/>
136
+ <PitchText id="vision-future" theme={theme} x={48} y={347} w={750} h={85} body="[Describe the company you intend to build in five years.]" size={28} color={theme.paper}/>
137
+ <PitchText id="vision-next-step" theme={theme} x={48} y={449} w={800} h={35} body="[Clear next step for the investor]" size={20} color={theme.paper}/>
138
+ </PitchSlide>
139
+ </PitchDeck>;
140
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "Pitch deck",
3
+ "description": "A venture pitch with a clear promise, product demonstration, evidence, market logic and a concrete ask. Fourteen adaptable slides with oversized statements, generous visual frames and precise comparisons.",
4
+ "format": "16:9 · Venture pitch",
5
+ "documentFormat": "presentation",
6
+ "structure": [
7
+ "A purpose-led opening and a memorable closing vision frame the investor story.",
8
+ "Customer pain, solution and product demonstration have different compositions.",
9
+ "Traction, market and financial positions use clearly labeled evidence placeholders, never invented numbers.",
10
+ "Commercial logic includes business model, route to customers and realistic alternatives.",
11
+ "Founder portraits and a milestone-based funding ask connect capability with the next stage.",
12
+ "Every slide and its editable placeholder content is copied into the new instance.",
13
+ "Shorten or reorder the skeleton for stage, audience and duration; use 5–7 key ideas for a short Demo Day pitch."
14
+ ]
15
+ }
@@ -0,0 +1,25 @@
1
+ # Proposal deck
2
+
3
+ A client-facing decision deck with the character of a clear executive memorandum: a narrow navigation rail, large recommendation, evidence-led image pauses, precise ledgers and stage gates. The fourteen-slide specimen is a replaceable placeholder skeleton, not a fixed sales script or a contractual agreement.
4
+
5
+ ## Adapt to the client
6
+
7
+ The default sequence is commission, recommendation, situation, outcomes, approach, workstreams, deliverables and acceptance, scope boundary, timeline, governance, relevant evidence, investment, dependencies and risk, next decision. Lead with the client's priorities. In an RFP, the required response order and evaluation criteria take precedence; add a compliance map if useful. A short proposal may need only recommendation, scope, delivery, price and decision. Move detailed schedules or terms to explicit appendix slides or a companion document. Do not force a proposal to contain a case study, three outcomes or two pricing options if it has none.
8
+
9
+ All starter copy is local TSX and editable. Use ordinary native text and keep stable slide/component IDs when adapting or reordering. The shell accepts caller themes; presentation sizes and canvas geometry are intentional local adaptations, with colors and families from the theme. Defaults are 960 × 540 and a 38 pt title. Reduce a long title explicitly, adjust geometry, or split a slide; do not hide overflow or shrink all content automatically. Most body copy is 16–24 pt. Footer notes are supporting material, never the only location for a material term.
10
+
11
+ `ProposalSlide` supplies the navigation and heading. `ProposalPanel`, `ProposalCopy`, `ProposalLabel`, `ProposalRule`, `ProposalPicture` and `ProposalLedgerRow` can be recombined locally. The ledger's four cells remain independently editable; keep meaningful row IDs. Text panels require an explicit height and ledger cells reserve 72 pt for copy (23 pt in the header). These bounds make excess content a preflight error before it can collide with another region. Adjust the height and neighboring geometry together, or split the content; do not disable clipping checks. Optional image props deliberately leave a visible labeled position. Supply `image={{item:'reviewed-local-image'}}`, with `fit:'contain'` for diagrams. `MediaFrame` preserves the native text around the image. The cover's portrait crop, approach's wide visual and case story's tall evidence panel serve different purposes. Use approved, relevant artwork and inspect its crop, contrast and provenance. No fabricated stock case results or implicit endorsement logos.
12
+
13
+ ## Research behind the skeleton
14
+
15
+ Research checked 11 September 2026. These sources inform our independent structure; this is not an official Shipley or government template.
16
+
17
+ - [Shipley Proposal Writer Playbook](https://digital.shipleywins.com/view/320547/i/): organize around client issues and benefits, connect features to their value, and support differentiation with evidence and risk mitigation. Applied here to the opening recommendation, benefit-linked approach, specific proof story and an explicit next decision. Research rationale is in this guide rather than pretending to be evidence for the future client's claims.
18
+ - [Shipley: Winning Executive Summaries](https://digital.shipleywins.com/view/1002657341/30-31): executive summaries should be organized around the customer's important issues. Applied as a concise, self-contained decision memo before company credentials.
19
+ - [FAR Subpart 37.6: Performance-Based Acquisition](https://www.acquisition.gov/far/subpart-37.6): outcome descriptions, measurable performance standards and assessment methods provide a useful structure for delivery clarity. Applied as separate outcome measures, deliverable acceptance evidence, named approval roles and stage gates. This is a structural reference; US procurement rules are not asserted to govern a general client engagement.
20
+
21
+ The optional commercial comparison, scope boundary and dependencies are design judgments for decision clarity. They do not supply legal or commercial terms: replace every amount, currency, tax treatment, payment condition, validity period, date, allocation, client name and claim with actual agreed or explicitly proposed material. Distinguish expected benefits from proven results. Case results need a source, measurement window, attribution, permission and transferability limits. If evidence is unavailable, omit the slide or state a planned validation approach.
22
+
23
+ ## Finish
24
+
25
+ Create through the presentation template catalog so project membership, format, theme adapter and assets are recorded. Review every slide after changes: these are bounded slides, not flowing pages. Confirm title fit, ledger row endings, contrast on the two dark slides, all commercial assumptions and the closing decision. Keep proofs outside the user's document library.
@@ -0,0 +1,52 @@
1
+ import type { ReactNode } from 'react';
2
+ import * as F from '@formepdf/react';
3
+ import { Block, Heading, MediaFrame, Paragraph, Presentation, Slide, TextSlot, type ImageFrameOptions } from 'opendoc';
4
+ import { themePage, themeType, type DocTheme } from 'opendoc/themes';
5
+
6
+ export type ProposalImage = Pick<ImageFrameOptions, 'fit' | 'position' | 'radius'> & { item: string; alt?: string };
7
+ type BoxProps = { x: number; y: number; w: number; h?: number };
8
+ const box = ({x,y,w,h}:BoxProps):F.Style => ({position:'absolute',left:x,top:y,width:w,...(h===undefined?{}:{height:h})});
9
+
10
+ export function ProposalDeck(props:Parameters<typeof Presentation>[0]) { return <Presentation {...props}/>; }
11
+
12
+ /** A slide shell, not a compulsory argument. Every visible word is supplied by its caller. */
13
+ export function ProposalSlide({id,theme,title,eyebrow,footer,number,children,dark=false,layout='standard',titleSize=38}:{
14
+ id:string;theme:DocTheme;title:ReactNode;eyebrow?:ReactNode;footer?:ReactNode;number?:ReactNode;children?:ReactNode;
15
+ dark?:boolean;layout?:'standard'|'cover'|'case'|'closing';titleSize?:number;
16
+ }) {
17
+ const ink=dark?theme.paper:theme.ink, muted=dark?theme.line:theme.muted;
18
+ const titleBox=layout==='cover'?{x:64,y:178,w:536,h:170}:layout==='case'?{x:596,y:78,w:316,h:92}:layout==='closing'?{x:88,y:135,w:766,h:145}:{x:88,y:76,w:824,h:92};
19
+ return <Slide id={id} padding={0} style={{...themePage(theme).style,backgroundColor:dark?theme.ink:theme.paper,lineBreaking:'greedy'}}>
20
+ {layout==='standard'&&<F.View style={{position:'absolute',left:48,top:40,width:2,height:454,backgroundColor:dark?theme.muted:theme.line}}/>}
21
+ {eyebrow&&<Block id={`${id}-eyebrow-frame`} style={{...box({x:layout==='cover'?64:layout==='case'?596:88,y:40,w:layout==='case'?316:790,h:28}),overflow:'hidden'}}><Paragraph id={`${id}-eyebrow`} role="label" style={{...themeType(theme,'label'),fontSize:11,lineHeight:1.15,margin:0,color:muted}}><TextSlot slot="eyebrow" from="eyebrow">{eyebrow}</TextSlot></Paragraph></Block>}
22
+ <Block id={`${id}-title-frame`} style={{...box(titleBox),overflow:'hidden'}}><Heading id={`${id}-title`} level={1} style={{...themeType(theme,'h1'),fontSize:layout==='cover'?titleSize+12:layout==='closing'?titleSize+10:titleSize,lineHeight:1.06,margin:0,color:ink}}><TextSlot slot="title" from="title">{title}</TextSlot></Heading></Block>
23
+ {children}
24
+ {footer&&<Paragraph id={`${id}-footer`} role="small" style={{...box({x:layout==='cover'?64:88,y:508,w:735}),...themeType(theme,'small'),fontSize:9,lineHeight:1.1,margin:0,color:muted}}><TextSlot slot="footer" from="footer">{footer}</TextSlot></Paragraph>}
25
+ {number&&<Paragraph id={`${id}-number`} role="small" style={{...box({x:864,y:505,w:48}),...themeType(theme,'small'),fontSize:12,lineHeight:1.1,margin:0,color:muted,textAlign:'right'}}><TextSlot slot="number" from="number">{number}</TextSlot></Paragraph>}
26
+ </Slide>;
27
+ }
28
+
29
+ export function ProposalPanel({id,x,y,w,h,theme,children,fill=false,dark=false,padding=0}:BoxProps&{id:string;h:number;theme:DocTheme;children?:ReactNode;fill?:boolean;dark?:boolean;padding?:number}) {
30
+ return <Block id={id} style={{...box({x,y,w,h}),overflow:'hidden',padding,backgroundColor:fill?(dark?theme.ink:theme.line):undefined}}>{children}</Block>;
31
+ }
32
+ export function ProposalCopy({id,theme,children,size=18,dark=false,bold=false,gap=12,color}: {id:string;theme:DocTheme;children:ReactNode;size?:number;dark?:boolean;bold?:boolean;gap?:number;color?:string}) {
33
+ return <Paragraph id={id} style={{fontFamily:bold?theme.heading:theme.body,fontSize:size,fontWeight:bold?600:400,lineHeight:1.28,color:color??(dark?theme.paper:theme.ink),marginTop:0,marginBottom:gap}}><TextSlot slot="copy" from="children">{children}</TextSlot></Paragraph>;
34
+ }
35
+ export function ProposalLabel({id,theme,children,dark=false}: {id:string;theme:DocTheme;children:ReactNode;dark?:boolean}) {
36
+ return <Paragraph id={id} role="label" style={{...themeType(theme,'label'),fontSize:11,lineHeight:1.1,marginTop:0,marginBottom:14,color:dark?theme.line:theme.muted}}><TextSlot slot="label" from="children">{children}</TextSlot></Paragraph>;
37
+ }
38
+ export function ProposalRule({x,y,w,theme,dark=false}:Omit<BoxProps,'h'>&{theme:DocTheme;dark?:boolean}) {return <F.View style={{...box({x,y,w,h:1}),backgroundColor:dark?theme.muted:theme.line}}/>;}
39
+
40
+ /** An omitted item deliberately reserves image space; a supplied missing item fails preflight. */
41
+ export function ProposalPicture({id,x,y,w,h,theme,image,label}:{id:string;x:number;y:number;w:number;h:number;theme:DocTheme;image?:ProposalImage;label:ReactNode}) {
42
+ return <Block id={id} style={{...box({x,y,w,h}),overflow:'hidden'}}>{image?<MediaFrame {...image} width={w} height={h}/>:<F.View style={{width:w,height:h,backgroundColor:theme.line,padding:24,justifyContent:'flex-end'}}>
43
+ <F.View style={{position:'absolute',left:24,top:24,width:38,height:38,borderWidth:1,borderColor:theme.muted}}/>
44
+ <Paragraph id={`${id}-label`} role="caption" style={{...themeType(theme,'caption'),fontSize:12,lineHeight:1.3,margin:0,color:theme.ink}}><TextSlot slot="label" from="label">{label}</TextSlot></Paragraph>
45
+ </F.View>}</Block>;
46
+ }
47
+
48
+ /** Four independently owned cells. Keep row IDs stable when deliverables move. */
49
+ export function ProposalLedgerRow({id,theme,y,deliverable,acceptance,owner,timing,header=false}:{id:string;theme:DocTheme;y:number;deliverable:ReactNode;acceptance:ReactNode;owner:ReactNode;timing:ReactNode;header?:boolean}) {
50
+ const fields=[['deliverable',deliverable,88,250],['acceptance',acceptance,358,260],['owner',owner,638,122],['timing',timing,780,132]] as const;
51
+ return <>{fields.map(([slot,value,x,w])=><Block key={slot} id={`${id}-${slot}`} style={{...box({x,y,w,h:header?23:72}),overflow:'hidden'}}><Paragraph id={`${id}-${slot}-text`} style={{fontFamily:header?theme.heading:theme.body,fontSize:header?11:16,lineHeight:1.27,fontWeight:header?600:400,color:header?theme.muted:theme.ink,margin:0}}><TextSlot slot={slot} from={slot}>{value}</TextSlot></Paragraph></Block>)}<ProposalRule x={88} y={y+(header?27:79)} w={824} theme={theme}/></>;
52
+ }
@@ -0,0 +1,172 @@
1
+ import { ProposalDeck, ProposalSlide, ProposalPanel as Panel, ProposalCopy as Copy, ProposalLabel as Label, ProposalRule as Rule, ProposalPicture as Picture, ProposalLedgerRow as Row } from './index';
2
+ import { neutral } from '../../themes';
3
+ import { type DocTheme } from 'opendoc/themes';
4
+
5
+ const title = 'A better outcome, together.';
6
+ export const meta = { title, description: 'A client proposal skeleton. Replace all placeholders with agreed scope and supported evidence.', kind: 'client proposal', theme: 'neutral' };
7
+ export const provenance = { template: 'templates/proposal-deck/index.tsx' };
8
+
9
+ // All copy lives in this instance. Omit, reorder or adapt slides to the actual decision.
10
+ // Add reviewed document-owned media via image={{item:'your-image'}}. Never invent case results or commercial terms.
11
+ export function Specimen({length='typical',theme=neutral}: {length?:'sparse'|'typical'|'long';theme?:DocTheme}={}) {
12
+ const title = length==='long' ? 'A considered proposal for improving the client experience across a complex organization' : meta.title;
13
+ if(length==='sparse') return <ProposalDeck title={title} theme={theme}><ProposalSlide id="sparse-decision" theme={theme} layout="closing" title="A focused proposal." eyebrow="CLIENT DECISION"><Panel id="sparse-request" x={88} y={300} w={650} h={194} theme={theme}><Copy id="sparse-request-copy" theme={theme} size={24}>[One recommendation and the next decision.]</Copy></Panel></ProposalSlide></ProposalDeck>;
14
+ return <ProposalDeck title={title} theme={theme}>
15
+ <ProposalSlide id="commission" theme={theme} layout="cover" title={title} titleSize={length==='long'?25:38} eyebrow="A PROPOSAL FOR [CLIENT]" footer="[Prepared by] · [Version / date]" number="01">
16
+ <Picture id="commission-image" x={644} y={0} w={316} h={488} theme={theme} label="Image position · the client's world, desired experience or project site"/>
17
+ <Panel id="commission-summary" x={64} y={364} w={510} h={124} theme={theme}>
18
+ <Copy id="commission-promise" theme={theme} size={24}>[The client outcome this engagement is designed to enable.]</Copy>
19
+ <Copy id="commission-context" theme={theme} size={14}>[Client organization] / [Project or opportunity reference]</Copy>
20
+ </Panel>
21
+ </ProposalSlide>
22
+
23
+ <ProposalSlide id="recommendation" theme={theme} title={length==='long'?'A longer recommendation headline can explain the client decision with useful context.':'The recommendation, at a glance.'} titleSize={length==='long'?31:38} eyebrow="01 / THE DECISION" footer="Proposal skeleton · replace with an agreed client brief" number="02">
24
+ <Panel id="recommendation-memo" x={88} y={190} w={515} h={304} theme={theme}>
25
+ <Label id="recommendation-label" theme={theme}>WE RECOMMEND</Label>
26
+ <Copy id="recommendation-statement" theme={theme} size={30} bold>[A specific course of action that answers the client's highest priority.]</Copy>
27
+ <Copy id="recommendation-rationale" theme={theme}>[Why this approach fits the situation, and the trade-off it makes.]</Copy>
28
+ </Panel>
29
+ <Rule x={638} y={178} w={274} theme={theme}/>
30
+ <Panel id="recommendation-facts" x={658} y={196} w={254} h={298} theme={theme}>
31
+ <Label id="recommendation-outcome-label" theme={theme}>VALUE TO [CLIENT]</Label>
32
+ <Copy id="recommendation-outcome" theme={theme} size={16}>[Expected benefit and how it will be measured.]</Copy>
33
+ <Label id="recommendation-effort-label" theme={theme}>COMMITMENT REQUIRED</Label>
34
+ <Copy id="recommendation-effort" theme={theme} size={16}>[Investment basis, delivery period and client input.]</Copy>
35
+ <Label id="recommendation-decision-label" theme={theme}>DECISION REQUESTED</Label>
36
+ <Copy id="recommendation-decision" theme={theme} size={16}>[What the approver needs to authorize next.]</Copy>
37
+ </Panel>
38
+ </ProposalSlide>
39
+
40
+ <ProposalSlide id="situation" theme={theme} title="Start with the client's reality." eyebrow="02 / UNDERSTANDING" number="03">
41
+ <Panel id="situation-current" x={88} y={186} w={364} h={225} theme={theme}>
42
+ <Label id="situation-current-label" theme={theme}>WHAT IS HAPPENING</Label>
43
+ <Copy id="situation-current-title" theme={theme} size={28} bold>[The current state, in the client's words.]</Copy>
44
+ <Copy id="situation-current-body" theme={theme}>[Who is affected, where friction occurs and what the client has already tried.]</Copy>
45
+ </Panel>
46
+ <Panel id="situation-stakes" x={510} y={186} w={402} h={225} theme={theme}>
47
+ <Label id="situation-stakes-label" theme={theme}>WHY IT MATTERS NOW</Label>
48
+ <Copy id="situation-stakes-title" theme={theme} size={28} bold>[The business consequence or opportunity.]</Copy>
49
+ <Copy id="situation-stakes-body" theme={theme}>[The trigger, constraints and cost of leaving the situation unresolved. Separate facts from assumptions.]</Copy>
50
+ </Panel>
51
+ <Rule x={88} y={429} w={824} theme={theme}/>
52
+ <Panel id="situation-source" x={88} y={447} w={824} h={47} theme={theme}><Copy id="situation-source-copy" theme={theme} size={13}>[Basis: client discovery / supplied brief / dated source. Note open questions for confirmation.]</Copy></Panel>
53
+ </ProposalSlide>
54
+
55
+ <ProposalSlide id="outcomes" theme={theme} title="Define what success will mean." eyebrow="03 / OUTCOMES" number="04">
56
+ <Panel id="outcome-primary" x={88} y={188} w={248} h={252} theme={theme}>
57
+ <Copy id="outcome-primary-number" theme={theme} size={54} bold>01</Copy>
58
+ <Copy id="outcome-primary-title" theme={theme} size={24} bold>[Primary outcome]</Copy>
59
+ <Copy id="outcome-primary-measure" theme={theme} size={16}>[Baseline → agreed target] · [Measure / evidence] · [Accountable owner]</Copy>
60
+ </Panel>
61
+ <Panel id="outcome-secondary" x={376} y={188} w={248} h={252} theme={theme}>
62
+ <Copy id="outcome-secondary-number" theme={theme} size={54} bold>02</Copy>
63
+ <Copy id="outcome-secondary-title" theme={theme} size={24} bold>[Second outcome]</Copy>
64
+ <Copy id="outcome-secondary-measure" theme={theme} size={16}>[Baseline → agreed target] · [Measure / evidence] · [Accountable owner]</Copy>
65
+ </Panel>
66
+ <Panel id="outcome-enabler" x={664} y={188} w={248} h={252} theme={theme}>
67
+ <Copy id="outcome-enabler-number" theme={theme} size={54} bold>03</Copy>
68
+ <Copy id="outcome-enabler-title" theme={theme} size={24} bold>[Enabling outcome]</Copy>
69
+ <Copy id="outcome-enabler-measure" theme={theme} size={16}>[Baseline → agreed target] · [Measure / evidence] · [Accountable owner]</Copy>
70
+ </Panel>
71
+ <Panel id="outcome-agreement" x={88} y={460} w={824} h={34} theme={theme}><Copy id="outcome-agreement-copy" theme={theme} size={13}>[Confirm measurement period, data access and acceptance authority before delivery begins.]</Copy></Panel>
72
+ </ProposalSlide>
73
+
74
+ <ProposalSlide id="approach" theme={theme} title="An approach shaped around the outcome." eyebrow="04 / RECOMMENDED APPROACH" titleSize={36} number="05">
75
+ <Panel id="approach-reasoning" x={88} y={190} w={345} h={304} theme={theme}>
76
+ <Label id="approach-principle-label" theme={theme}>THE CORE IDEA</Label>
77
+ <Copy id="approach-principle" theme={theme} size={27} bold>[The organizing principle behind the solution.]</Copy>
78
+ <Copy id="approach-logic" theme={theme} size={18}>[Explain how the approach produces the desired change. Include the important design choice.]</Copy>
79
+ <Copy id="approach-alternative" theme={theme} size={14}>[Alternative considered and the reason for this recommendation.]</Copy>
80
+ </Panel>
81
+ <Picture id="approach-visual" x={484} y={182} w={428} h={245} theme={theme} label="Visual position · solution diagram, experience concept or annotated prototype"/>
82
+ <Panel id="approach-caption" x={484} y={442} w={428} h={52} theme={theme}><Copy id="approach-caption-copy" theme={theme} size={13}>[Caption: connect the visual to a specific client benefit.]</Copy></Panel>
83
+ </ProposalSlide>
84
+
85
+ <ProposalSlide id="workstreams" theme={theme} title="Translate the idea into work." eyebrow="05 / DELIVERY APPROACH" number="06">
86
+ <Panel id="workstream-discover" x={88} y={183} w={200} h={90} theme={theme}><Label id="workstream-discover-label" theme={theme}>WORKSTREAM 01</Label><Copy id="workstream-discover-title" theme={theme} size={24} bold>[Understand]</Copy></Panel>
87
+ <Panel id="workstream-discover-detail" x={358} y={183} w={554} h={90} theme={theme}><Copy id="workstream-discover-body" theme={theme}>[Activities and decisions that establish the baseline and test the critical assumptions.]</Copy><Copy id="workstream-discover-output" theme={theme} size={13}>[Output → the next workstream needs this result.]</Copy></Panel>
88
+ <Rule x={88} y={278} w={824} theme={theme}/>
89
+ <Panel id="workstream-create" x={88} y={297} w={200} h={90} theme={theme}><Label id="workstream-create-label" theme={theme}>WORKSTREAM 02</Label><Copy id="workstream-create-title" theme={theme} size={24} bold>[Create]</Copy></Panel>
90
+ <Panel id="workstream-create-detail" x={358} y={297} w={554} h={90} theme={theme}><Copy id="workstream-create-body" theme={theme}>[Activities that develop and test the proposed solution with the people who will use it.]</Copy><Copy id="workstream-create-output" theme={theme} size={13}>[Output → the next decision this work enables.]</Copy></Panel>
91
+ <Rule x={88} y={392} w={824} theme={theme}/>
92
+ <Panel id="workstream-enable" x={88} y={411} w={200} h={83} theme={theme}><Label id="workstream-enable-label" theme={theme}>WORKSTREAM 03</Label><Copy id="workstream-enable-title" theme={theme} size={24} bold>[Enable]</Copy></Panel>
93
+ <Panel id="workstream-enable-detail" x={358} y={411} w={554} h={83} theme={theme}><Copy id="workstream-enable-body" theme={theme}>[Activities that support adoption, handover and measurement of the agreed results.]</Copy></Panel>
94
+ </ProposalSlide>
95
+
96
+ <ProposalSlide id="deliverables" theme={theme} title="Make the deliverables testable." eyebrow="06 / SCOPE & ACCEPTANCE" number="07">
97
+ <Row id="deliverables-header" theme={theme} y={178} header deliverable="DELIVERABLE" acceptance="ACCEPTANCE EVIDENCE" owner="APPROVER" timing="DUE / GATE"/>
98
+ <Row id="deliverable-baseline" theme={theme} y={222} deliverable="[Named output and format]" acceptance="[Objective completeness or quality criterion]" owner="[Client role]" timing="[Milestone]"/>
99
+ <Row id="deliverable-solution" theme={theme} y={318} deliverable="[Named output and format]" acceptance="[Review method and evidence required]" owner="[Client role]" timing="[Milestone]"/>
100
+ <Row id="deliverable-handover" theme={theme} y={414} deliverable="[Named output and format]" acceptance="[What demonstrates a successful handover]" owner="[Client role]" timing="[Milestone]"/>
101
+ </ProposalSlide>
102
+
103
+ <ProposalSlide id="scope-boundary" theme={theme} title="A clear boundary protects delivery." eyebrow="07 / SCOPE BOUNDARY" dark number="08">
104
+ <Panel id="scope-included" x={88} y={185} w={360} h={230} theme={theme}>
105
+ <Label id="scope-included-label" theme={theme} dark>INCLUDED</Label>
106
+ <Copy id="scope-included-title" theme={theme} size={28} bold dark>[What we are responsible for.]</Copy>
107
+ <Copy id="scope-included-copy" theme={theme} size={18} dark>[Services, audiences, locations, systems and review cycles included in this proposal.]</Copy>
108
+ </Panel>
109
+ <Panel id="scope-excluded" x={528} y={185} w={384} h={230} theme={theme}>
110
+ <Label id="scope-excluded-label" theme={theme} dark>OUTSIDE THIS PROPOSAL</Label>
111
+ <Copy id="scope-excluded-title" theme={theme} size={28} bold dark>[What would need separate agreement.]</Copy>
112
+ <Copy id="scope-excluded-copy" theme={theme} size={18} dark>[Exclusions and optional future work. Be specific about ambiguous boundaries.]</Copy>
113
+ </Panel>
114
+ <Rule x={88} y={432} w={824} theme={theme} dark/>
115
+ <Panel id="scope-change" x={88} y={448} w={824} h={46} theme={theme}><Copy id="scope-change-copy" theme={theme} size={14} dark>[Change route: who assesses scope, cost and timing impacts, and who approves a change.]</Copy></Panel>
116
+ </ProposalSlide>
117
+
118
+ <ProposalSlide id="roadmap" theme={theme} title="Sequence the work around decisions." eyebrow="08 / MILESTONES" number="09">
119
+ <Rule x={88} y={200} w={824} theme={theme}/>
120
+ <Panel id="roadmap-align" x={88} y={217} w={178} h={225} theme={theme}><Label id="roadmap-align-time" theme={theme}>[PERIOD / DATES]</Label><Copy id="roadmap-align-title" theme={theme} size={27} bold>[Align]</Copy><Copy id="roadmap-align-copy" theme={theme} size={16}>[Key activities and output.]</Copy><Label id="roadmap-align-gate-label" theme={theme}>DECISION GATE</Label><Copy id="roadmap-align-gate" theme={theme} size={15}>[Approve baseline and scope.]</Copy></Panel>
121
+ <Panel id="roadmap-design" x={302} y={217} w={178} h={225} theme={theme}><Label id="roadmap-design-time" theme={theme}>[PERIOD / DATES]</Label><Copy id="roadmap-design-title" theme={theme} size={27} bold>[Develop]</Copy><Copy id="roadmap-design-copy" theme={theme} size={16}>[Key activities and output.]</Copy><Label id="roadmap-design-gate-label" theme={theme}>DECISION GATE</Label><Copy id="roadmap-design-gate" theme={theme} size={15}>[Select a direction.]</Copy></Panel>
122
+ <Panel id="roadmap-validate" x={516} y={217} w={178} h={225} theme={theme}><Label id="roadmap-validate-time" theme={theme}>[PERIOD / DATES]</Label><Copy id="roadmap-validate-title" theme={theme} size={27} bold>[Validate]</Copy><Copy id="roadmap-validate-copy" theme={theme} size={16}>[Key activities and output.]</Copy><Label id="roadmap-validate-gate-label" theme={theme}>DECISION GATE</Label><Copy id="roadmap-validate-gate" theme={theme} size={15}>[Accept the tested result.]</Copy></Panel>
123
+ <Panel id="roadmap-transfer" x={730} y={217} w={182} h={225} theme={theme}><Label id="roadmap-transfer-time" theme={theme}>[PERIOD / DATES]</Label><Copy id="roadmap-transfer-title" theme={theme} size={27} bold>[Transfer]</Copy><Copy id="roadmap-transfer-copy" theme={theme} size={16}>[Key activities and output.]</Copy><Label id="roadmap-transfer-gate-label" theme={theme}>DECISION GATE</Label><Copy id="roadmap-transfer-gate" theme={theme} size={15}>[Confirm handover.]</Copy></Panel>
124
+ <Panel id="roadmap-dependency" x={88} y={460} w={824} h={34} theme={theme}><Copy id="roadmap-dependency-copy" theme={theme} size={13}>[Schedule basis: start condition, client review windows and dependencies. Confirm before committing dates.]</Copy></Panel>
125
+ </ProposalSlide>
126
+
127
+ <ProposalSlide id="governance" theme={theme} title="Make ownership visible." eyebrow="09 / PEOPLE & GOVERNANCE" number="10">
128
+ <Panel id="governance-sponsor" x={88} y={186} w={248} h={190} theme={theme}><Label id="governance-sponsor-label" theme={theme}>CLIENT SPONSOR</Label><Copy id="governance-sponsor-name" theme={theme} size={26} bold>[Name / role]</Copy><Copy id="governance-sponsor-duty" theme={theme} size={17}>[Owns the business outcome and approves scope, investment and key decisions.]</Copy></Panel>
129
+ <Panel id="governance-lead" x={376} y={186} w={248} h={190} theme={theme}><Label id="governance-lead-label" theme={theme}>DELIVERY LEAD</Label><Copy id="governance-lead-name" theme={theme} size={26} bold>[Name / role]</Copy><Copy id="governance-lead-duty" theme={theme} size={17}>[Owns day-to-day delivery, quality and the agreed escalation route.]</Copy></Panel>
130
+ <Panel id="governance-team" x={664} y={186} w={248} h={190} theme={theme}><Label id="governance-team-label" theme={theme}>SPECIALIST TEAM</Label><Copy id="governance-team-name" theme={theme} size={26} bold>[Named roles]</Copy><Copy id="governance-team-duty" theme={theme} size={17}>[Relevant capability, allocation and responsibility. Confirm availability.]</Copy></Panel>
131
+ <Rule x={88} y={392} w={824} theme={theme}/>
132
+ <Panel id="governance-cadence" x={88} y={415} w={824} h={79} theme={theme}><Label id="governance-cadence-label" theme={theme}>HOW WE WORK TOGETHER</Label><Copy id="governance-cadence-copy" theme={theme} size={17}>[Working cadence] · [Decision forum] · [Reporting artifact] · [Escalation owner]</Copy></Panel>
133
+ </ProposalSlide>
134
+
135
+ <ProposalSlide id="proof-story" theme={theme} layout="case" title="Relevant work. Specific proof." titleSize={32} eyebrow="10 / EVIDENCE" number="11">
136
+ <Picture id="proof-story-image" x={0} y={0} w={552} h={486} theme={theme} label="Case image position · approved project photograph, output or annotated evidence"/>
137
+ <Panel id="proof-story-caption" x={36} y={498} w={495} h={30} theme={theme}><Copy id="proof-story-caption-copy" theme={theme} size={11}>[Client permission / image attribution / case reference]</Copy></Panel>
138
+ <Panel id="proof-story-detail" x={596} y={184} w={316} h={310} theme={theme}>
139
+ <Label id="proof-story-context-label" theme={theme}>COMPARABLE CHALLENGE</Label><Copy id="proof-story-context" theme={theme} size={16}>[Relevant context and why it resembles this engagement.]</Copy>
140
+ <Label id="proof-story-action-label" theme={theme}>OUR CONTRIBUTION</Label><Copy id="proof-story-action" theme={theme} size={16}>[The team's actual scope and actions.]</Copy>
141
+ <Label id="proof-story-result-label" theme={theme}>VERIFIABLE RESULT</Label><Copy id="proof-story-result" theme={theme} size={16}>[Supported outcome, measurement period and source. State limits to transferability.]</Copy>
142
+ </Panel>
143
+ </ProposalSlide>
144
+
145
+ <ProposalSlide id="investment" theme={theme} title="Make the commercial choice clear." eyebrow="11 / INVESTMENT" number="12">
146
+ <Panel id="investment-core" x={88} y={180} w={384} h={198} theme={theme}>
147
+ <Label id="investment-core-label" theme={theme}>[OPTION A / CORE SCOPE]</Label><Copy id="investment-core-price" theme={theme} size={29} bold>[Amount + currency]</Copy><Copy id="investment-core-basis" theme={theme} size={15}>[Fixed fee / time basis / unit basis]</Copy><Copy id="investment-core-inclusion" theme={theme} size={17}>[Included outcomes, deliverables and capacity. Explain who this option fits.]</Copy>
148
+ </Panel>
149
+ <Panel id="investment-extended" x={530} y={180} w={382} h={198} theme={theme}>
150
+ <Label id="investment-extended-label" theme={theme}>[OPTION B / EXTENDED SCOPE]</Label><Copy id="investment-extended-price" theme={theme} size={29} bold>[Amount + currency]</Copy><Copy id="investment-extended-basis" theme={theme} size={15}>[Same comparison basis as option A]</Copy><Copy id="investment-extended-inclusion" theme={theme} size={17}>[Additional value, scope and trade-offs. Omit this option if it is not useful.]</Copy>
151
+ </Panel>
152
+ <Rule x={88} y={389} w={824} theme={theme}/>
153
+ <Panel id="investment-terms" x={88} y={406} w={824} h={88} theme={theme}><Label id="investment-terms-label" theme={theme}>COMMERCIAL BASIS TO CONFIRM</Label><Copy id="investment-terms-copy" theme={theme} size={15}>[Tax and expenses] · [Payment milestones / terms] · [Validity] · [Currency / assumptions] · [Reference the detailed quotation or agreement; do not leave material costs implicit.]</Copy></Panel>
154
+ </ProposalSlide>
155
+
156
+ <ProposalSlide id="delivery-conditions" theme={theme} title="Surface what delivery depends on." eyebrow="12 / ASSUMPTIONS & RISK" number="13">
157
+ <Panel id="conditions-client" x={88} y={185} w={250} h={230} theme={theme}><Label id="conditions-client-label" theme={theme}>CLIENT DEPENDENCIES</Label><Copy id="conditions-client-title" theme={theme} size={26} bold>[What we need]</Copy><Copy id="conditions-client-copy" theme={theme} size={17}>[Access, data, people, decisions and facilities.]</Copy><Copy id="conditions-client-owner" theme={theme} size={14}>[Owner / required by / impact if late]</Copy></Panel>
158
+ <Panel id="conditions-assumptions" x={376} y={185} w={248} h={230} theme={theme}><Label id="conditions-assumptions-label" theme={theme}>ASSUMPTIONS</Label><Copy id="conditions-assumptions-title" theme={theme} size={26} bold>[What must hold]</Copy><Copy id="conditions-assumptions-copy" theme={theme} size={17}>[Conditions underpinning scope, timing and price.]</Copy><Copy id="conditions-assumptions-owner" theme={theme} size={14}>[Validation owner / confirmation date]</Copy></Panel>
159
+ <Panel id="conditions-risk" x={664} y={185} w={248} h={230} theme={theme}><Label id="conditions-risk-label" theme={theme}>PRIORITY RISK</Label><Copy id="conditions-risk-title" theme={theme} size={26} bold>[What could change]</Copy><Copy id="conditions-risk-copy" theme={theme} size={17}>[Cause → event → delivery consequence.]</Copy><Copy id="conditions-risk-owner" theme={theme} size={14}>[Mitigation / owner / escalation trigger]</Copy></Panel>
160
+ <Rule x={88} y={429} w={824} theme={theme}/>
161
+ <Panel id="conditions-followup" x={88} y={447} w={824} h={47} theme={theme}><Copy id="conditions-followup-copy" theme={theme} size={13}>[Open issues and how they will be resolved before the work is commissioned.]</Copy></Panel>
162
+ </ProposalSlide>
163
+
164
+ <ProposalSlide id="next-decision" theme={theme} layout="closing" title="A clear decision. A practical next step." titleSize={43} eyebrow="13 / NEXT DECISION" dark number="14">
165
+ <Panel id="next-decision-request" x={88} y={302} w={520} h={145} theme={theme}><Copy id="next-decision-request-copy" theme={theme} size={24} dark>[Approve the chosen scope and commercial basis, or confirm the changes needed to proceed.]</Copy></Panel>
166
+ <Panel id="next-decision-owner" x={676} y={312} w={236} h={141} theme={theme}><Label id="next-decision-owner-label" theme={theme} dark>DECISION OWNER / BY</Label><Copy id="next-decision-owner-copy" theme={theme} size={17} dark>[Approver] / [Agreed date]</Copy><Label id="next-decision-action-label" theme={theme} dark>ON AGREEMENT</Label><Copy id="next-decision-action-copy" theme={theme} size={17} dark>[Immediate next action and owner]</Copy></Panel>
167
+ <Panel id="next-decision-contact" x={88} y={466} w={824} h={28} theme={theme}><Copy id="next-decision-contact-copy" theme={theme} size={13} dark>[Contact name] · [Email] · [Proposal reference]</Copy></Panel>
168
+ </ProposalSlide>
169
+ </ProposalDeck>;
170
+ }
171
+
172
+ export default Specimen;