openplanr 3.1.1 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (363) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/dist/cli/commands/groups/delivery.d.ts.map +1 -1
  3. package/dist/cli/commands/groups/delivery.js +2 -0
  4. package/dist/cli/commands/groups/delivery.js.map +1 -1
  5. package/dist/cli/commands/planning-artifacts.d.ts.map +1 -1
  6. package/dist/cli/commands/planning-artifacts.js +22 -12
  7. package/dist/cli/commands/planning-artifacts.js.map +1 -1
  8. package/dist/cli/commands/ship.d.ts +3 -0
  9. package/dist/cli/commands/ship.d.ts.map +1 -0
  10. package/dist/cli/commands/ship.js +65 -0
  11. package/dist/cli/commands/ship.js.map +1 -0
  12. package/dist/dashboard/.vite/manifest.json +1 -1
  13. package/dist/dashboard/assets/{index-G7ygVDGg.js → index-L8qtwqv6.js} +2 -2
  14. package/dist/dashboard/assets/{index-G7ygVDGg.js.map → index-L8qtwqv6.js.map} +1 -1
  15. package/dist/dashboard/dashboard-manifest.json +8 -8
  16. package/dist/dashboard/index.html +1 -1
  17. package/dist/models/schema.d.ts +39 -23
  18. package/dist/models/schema.d.ts.map +1 -1
  19. package/dist/models/schema.js +19 -12
  20. package/dist/models/schema.js.map +1 -1
  21. package/dist/models/types.d.ts +6 -0
  22. package/dist/models/types.d.ts.map +1 -1
  23. package/dist/services/id-service.d.ts +1 -5
  24. package/dist/services/id-service.d.ts.map +1 -1
  25. package/dist/services/id-service.js +1 -34
  26. package/dist/services/id-service.js.map +1 -1
  27. package/dist/services/ship-checks/changes.d.ts +24 -0
  28. package/dist/services/ship-checks/changes.d.ts.map +1 -0
  29. package/dist/services/ship-checks/changes.js +135 -0
  30. package/dist/services/ship-checks/changes.js.map +1 -0
  31. package/dist/services/ship-checks/contract.d.ts +81 -0
  32. package/dist/services/ship-checks/contract.d.ts.map +1 -0
  33. package/dist/services/ship-checks/contract.js +7 -0
  34. package/dist/services/ship-checks/contract.js.map +1 -0
  35. package/dist/services/ship-checks/discover.d.ts +10 -0
  36. package/dist/services/ship-checks/discover.d.ts.map +1 -0
  37. package/dist/services/ship-checks/discover.js +250 -0
  38. package/dist/services/ship-checks/discover.js.map +1 -0
  39. package/dist/services/ship-checks/glob.d.ts +5 -0
  40. package/dist/services/ship-checks/glob.d.ts.map +1 -0
  41. package/dist/services/ship-checks/glob.js +39 -0
  42. package/dist/services/ship-checks/glob.js.map +1 -0
  43. package/dist/services/ship-checks/hooks.d.ts +7 -0
  44. package/dist/services/ship-checks/hooks.d.ts.map +1 -0
  45. package/dist/services/ship-checks/hooks.js +65 -0
  46. package/dist/services/ship-checks/hooks.js.map +1 -0
  47. package/dist/services/ship-checks/packages.d.ts +29 -0
  48. package/dist/services/ship-checks/packages.d.ts.map +1 -0
  49. package/dist/services/ship-checks/packages.js +197 -0
  50. package/dist/services/ship-checks/packages.js.map +1 -0
  51. package/dist/services/ship-checks/related-tests.d.ts +13 -0
  52. package/dist/services/ship-checks/related-tests.d.ts.map +1 -0
  53. package/dist/services/ship-checks/related-tests.js +73 -0
  54. package/dist/services/ship-checks/related-tests.js.map +1 -0
  55. package/dist/services/ship-checks/scope.d.ts +8 -0
  56. package/dist/services/ship-checks/scope.d.ts.map +1 -0
  57. package/dist/services/ship-checks/scope.js +66 -0
  58. package/dist/services/ship-checks/scope.js.map +1 -0
  59. package/dist/services/ship-checks/task-requirements.d.ts +14 -0
  60. package/dist/services/ship-checks/task-requirements.d.ts.map +1 -0
  61. package/dist/services/ship-checks/task-requirements.js +145 -0
  62. package/dist/services/ship-checks/task-requirements.js.map +1 -0
  63. package/dist/services/ship-checks/workflows.d.ts +21 -0
  64. package/dist/services/ship-checks/workflows.d.ts.map +1 -0
  65. package/dist/services/ship-checks/workflows.js +208 -0
  66. package/dist/services/ship-checks/workflows.js.map +1 -0
  67. package/dist/services/template-service.d.ts +2 -0
  68. package/dist/services/template-service.d.ts.map +1 -1
  69. package/dist/services/template-service.js +4 -0
  70. package/dist/services/template-service.js.map +1 -1
  71. package/dist/utils/slugify.d.ts +1 -8
  72. package/dist/utils/slugify.d.ts.map +1 -1
  73. package/dist/utils/slugify.js +1 -25
  74. package/dist/utils/slugify.js.map +1 -1
  75. package/docs/CLI.md +48 -1
  76. package/lib/backlog-item.d.mts +49 -0
  77. package/lib/backlog-item.mjs +339 -0
  78. package/lib/host-packages/adapter-registry.json +5 -5
  79. package/lib/host-packages/capability-map.json +1 -1
  80. package/lib/host-packages/claude/.claude-plugin/marketplace.json +2 -2
  81. package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +1 -1
  82. package/lib/host-packages/claude/openplanr/.openplanr-content.json +126 -90
  83. package/lib/host-packages/claude/openplanr/CONNECTORS.md +4 -6
  84. package/lib/host-packages/claude/openplanr/README.md +1 -1
  85. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-artifact-shell.mjs +1 -1
  86. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-chunked-workspace-client.mjs +1 -1
  87. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-document.mjs +385 -79
  88. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-handoff.mjs +1 -1
  89. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-resource-pack.mjs +1 -1
  90. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-review.mjs +45 -4
  91. package/lib/host-packages/{cursor/openplanr/runtime/design/scripts/design-runtime-support-e34c388a8e59.mjs → claude/openplanr/runtime/design/scripts/design-runtime-support-6774fd3d5d02.mjs} +1 -1
  92. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-share.mjs +8 -5
  93. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-3d9b1a86.mjs +40 -7
  94. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-artifact-support-protocol-contracts-ea2cd15e.mjs +1 -1
  95. package/lib/host-packages/claude/openplanr/runtime/design/scripts/{design-shared-protocol-contracts-31a760fc.mjs → design-shared-protocol-contracts-b5f28f94.mjs} +284 -45
  96. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-upload-spool.mjs +1 -1
  97. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design.mjs +215 -55
  98. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/02-artifact-review-ui.js +23 -23
  99. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +246 -45
  100. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/06-artifact-review-ui.js +12 -12
  101. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/08-artifact-review-ui.js +47 -14
  102. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +11 -10
  103. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -3
  104. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.css +16 -11
  105. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/01-module-runtime.js +7 -11
  106. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +163 -274
  107. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/03-react-dom-client-fiber-foundations.js +494 -967
  108. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/04-react-dom-client-reconciliation-hooks.js +346 -678
  109. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/05-react-dom-client-render-phases.js +382 -810
  110. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/06-react-dom-client-commit-effects.js +406 -730
  111. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/07-react-dom-client-work-loop-scheduling.js +259 -522
  112. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/08-react-dom-client-dom-events-properties-hydration.js +585 -937
  113. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js +115 -240
  114. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/10-react.js +7 -17
  115. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/11-artifact-review-ui.js +3 -4
  116. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-protocol-contracts.js +215 -0
  117. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-design-review-experience.js +2766 -0
  118. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-studio-shell.js +134 -0
  119. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-canvas-engine.js +2170 -0
  120. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/16-design-review-experience.js +16 -0
  121. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/17-studio-shell.js +8 -0
  122. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/18-interface-primitives.js +3883 -0
  123. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/19-interface-primitives.js +966 -0
  124. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/{16-studio-shell.js → 20-studio-shell.js} +122 -227
  125. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/21-design-studio.js +1583 -0
  126. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +101 -47
  127. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +5 -1
  128. package/lib/host-packages/{openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0 → claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.20.0}/design-document.schema.json +78 -5
  129. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +247 -45
  130. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/design.mjs +45 -12
  131. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +5 -1
  132. package/lib/host-packages/claude/openplanr/skills/connect/references/connectors.md +4 -6
  133. package/lib/host-packages/claude/openplanr/skills/design/SKILL.md +12 -0
  134. package/lib/host-packages/claude/openplanr/skills/design/references/craft.md +14 -3
  135. package/lib/host-packages/claude/openplanr/skills/design/references/design-system.md +33 -1
  136. package/lib/host-packages/claude/openplanr/skills/design/references/discovery.md +18 -4
  137. package/lib/host-packages/claude/openplanr/skills/design/references/generation.md +74 -1
  138. package/lib/host-packages/claude/openplanr/skills/design/references/hosted-canvas.md +62 -0
  139. package/lib/host-packages/claude/openplanr/skills/design/references/review.md +46 -1
  140. package/lib/host-packages/claude/openplanr/skills/design/references/utilities.md +6 -0
  141. package/lib/host-packages/claude/openplanr/skills/design/schemas/design-document.schema.json +78 -5
  142. package/lib/host-packages/claude/openplanr/skills/design-loop/references/craft.md +14 -3
  143. package/lib/host-packages/claude/openplanr/skills/design-loop/references/design-system.md +33 -1
  144. package/lib/host-packages/claude/openplanr/skills/design-loop/references/discovery.md +18 -4
  145. package/lib/host-packages/claude/openplanr/skills/design-loop/references/generation.md +74 -1
  146. package/lib/host-packages/claude/openplanr/skills/design-loop/references/review.md +46 -1
  147. package/lib/host-packages/claude/openplanr/skills/design-loop/references/utilities.md +6 -0
  148. package/lib/host-packages/claude/openplanr/skills/design-loop/schemas/design-document.schema.json +78 -5
  149. package/lib/host-packages/claude/openplanr/skills/design-review/references/craft.md +14 -3
  150. package/lib/host-packages/claude/openplanr/skills/design-review/references/design-system.md +33 -1
  151. package/lib/host-packages/claude/openplanr/skills/design-review/references/discovery.md +18 -4
  152. package/lib/host-packages/claude/openplanr/skills/design-review/references/generation.md +74 -1
  153. package/lib/host-packages/claude/openplanr/skills/design-review/references/review.md +46 -1
  154. package/lib/host-packages/claude/openplanr/skills/design-review/references/utilities.md +6 -0
  155. package/lib/host-packages/claude/openplanr/skills/design-review/schemas/design-document.schema.json +78 -5
  156. package/lib/host-packages/claude/openplanr/skills/investigate/SKILL.md +10 -1
  157. package/lib/host-packages/claude/openplanr/skills/investigate/references/findings.md +92 -0
  158. package/lib/host-packages/claude/openplanr/skills/investigate/scripts/backlog-item.mjs +339 -0
  159. package/lib/host-packages/claude/openplanr/skills/plan/SKILL.md +3 -0
  160. package/lib/host-packages/claude/openplanr/skills/plan/schemas/design-document.schema.json +78 -5
  161. package/lib/host-packages/claude/openplanr/skills/share/references/connectors.md +4 -6
  162. package/lib/host-packages/claude/openplanr/skills/ship/SKILL.md +15 -4
  163. package/lib/host-packages/claude/openplanr/skills/ship/references/findings.md +92 -0
  164. package/lib/host-packages/claude/openplanr/skills/ship/references/result-contract.md +3 -1
  165. package/lib/host-packages/claude/openplanr/skills/ship/scripts/backlog-item.mjs +339 -0
  166. package/lib/host-packages/claude/openplanr/skills/sprint/references/connectors.md +4 -6
  167. package/lib/host-packages/claude/openplanr/skills/status/references/connectors.md +4 -6
  168. package/lib/host-packages/claude/openplanr/skills/sync/references/connectors.md +4 -6
  169. package/lib/host-packages/cursor/openplanr/.openplanr-content.json +125 -89
  170. package/lib/host-packages/cursor/openplanr/CONNECTORS.md +4 -6
  171. package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
  172. package/lib/host-packages/cursor/openplanr/rules/planr-connect/references/connectors.md +4 -6
  173. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/craft.md +14 -3
  174. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/design-system.md +33 -1
  175. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/discovery.md +18 -4
  176. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/generation.md +74 -1
  177. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/hosted-canvas.md +62 -0
  178. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/review.md +46 -1
  179. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/utilities.md +6 -0
  180. package/lib/host-packages/cursor/openplanr/rules/planr-design/schemas/design-document.schema.json +78 -5
  181. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/craft.md +14 -3
  182. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/design-system.md +33 -1
  183. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/discovery.md +18 -4
  184. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/generation.md +74 -1
  185. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/review.md +46 -1
  186. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/utilities.md +6 -0
  187. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/schemas/design-document.schema.json +78 -5
  188. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/craft.md +14 -3
  189. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/design-system.md +33 -1
  190. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/discovery.md +18 -4
  191. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/generation.md +74 -1
  192. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/review.md +46 -1
  193. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/utilities.md +6 -0
  194. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/schemas/design-document.schema.json +78 -5
  195. package/lib/host-packages/cursor/openplanr/rules/planr-design.mdc +12 -0
  196. package/lib/host-packages/cursor/openplanr/rules/planr-investigate/references/findings.md +92 -0
  197. package/lib/host-packages/cursor/openplanr/rules/planr-investigate/scripts/backlog-item.mjs +339 -0
  198. package/lib/host-packages/cursor/openplanr/rules/planr-investigate.mdc +10 -1
  199. package/lib/host-packages/cursor/openplanr/rules/planr-plan/schemas/design-document.schema.json +78 -5
  200. package/lib/host-packages/cursor/openplanr/rules/planr-plan.mdc +3 -0
  201. package/lib/host-packages/cursor/openplanr/rules/planr-share/references/connectors.md +4 -6
  202. package/lib/host-packages/cursor/openplanr/rules/planr-ship/references/findings.md +92 -0
  203. package/lib/host-packages/cursor/openplanr/rules/planr-ship/references/result-contract.md +3 -1
  204. package/lib/host-packages/cursor/openplanr/rules/planr-ship/scripts/backlog-item.mjs +339 -0
  205. package/lib/host-packages/cursor/openplanr/rules/planr-ship.mdc +15 -4
  206. package/lib/host-packages/cursor/openplanr/rules/planr-sprint/references/connectors.md +4 -6
  207. package/lib/host-packages/cursor/openplanr/rules/planr-status/references/connectors.md +4 -6
  208. package/lib/host-packages/cursor/openplanr/rules/planr-sync/references/connectors.md +4 -6
  209. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-artifact-shell.mjs +1 -1
  210. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-chunked-workspace-client.mjs +1 -1
  211. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-document.mjs +385 -79
  212. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-handoff.mjs +1 -1
  213. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-resource-pack.mjs +1 -1
  214. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-review.mjs +45 -4
  215. package/lib/host-packages/{openai/openplanr/runtime/design/scripts/design-runtime-support-e34c388a8e59.mjs → cursor/openplanr/runtime/design/scripts/design-runtime-support-6774fd3d5d02.mjs} +1 -1
  216. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-share.mjs +8 -5
  217. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-3d9b1a86.mjs +40 -7
  218. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-artifact-support-protocol-contracts-ea2cd15e.mjs +1 -1
  219. package/lib/host-packages/{openai/openplanr/runtime/design/scripts/design-shared-protocol-contracts-31a760fc.mjs → cursor/openplanr/runtime/design/scripts/design-shared-protocol-contracts-b5f28f94.mjs} +284 -45
  220. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-upload-spool.mjs +1 -1
  221. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design.mjs +215 -55
  222. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/02-artifact-review-ui.js +23 -23
  223. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +246 -45
  224. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/06-artifact-review-ui.js +12 -12
  225. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/08-artifact-review-ui.js +47 -14
  226. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +11 -10
  227. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -3
  228. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.css +16 -11
  229. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/01-module-runtime.js +7 -11
  230. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +163 -274
  231. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/03-react-dom-client-fiber-foundations.js +494 -967
  232. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/04-react-dom-client-reconciliation-hooks.js +346 -678
  233. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/05-react-dom-client-render-phases.js +382 -810
  234. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/06-react-dom-client-commit-effects.js +406 -730
  235. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/07-react-dom-client-work-loop-scheduling.js +259 -522
  236. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/08-react-dom-client-dom-events-properties-hydration.js +585 -937
  237. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js +115 -240
  238. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/10-react.js +7 -17
  239. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/11-artifact-review-ui.js +3 -4
  240. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-protocol-contracts.js +215 -0
  241. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-design-review-experience.js +2766 -0
  242. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-studio-shell.js +134 -0
  243. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-canvas-engine.js +2170 -0
  244. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/16-design-review-experience.js +16 -0
  245. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/17-studio-shell.js +8 -0
  246. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/18-interface-primitives.js +3883 -0
  247. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/19-interface-primitives.js +966 -0
  248. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/{16-studio-shell.js → 20-studio-shell.js} +122 -227
  249. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/21-design-studio.js +1583 -0
  250. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +101 -47
  251. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +5 -1
  252. package/lib/host-packages/{claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0 → cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.20.0}/design-document.schema.json +78 -5
  253. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +247 -45
  254. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/design.mjs +45 -12
  255. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +5 -1
  256. package/lib/host-packages/openai/.claude-plugin/marketplace.json +2 -2
  257. package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +1 -1
  258. package/lib/host-packages/openai/openplanr/.openplanr-content.json +128 -92
  259. package/lib/host-packages/openai/openplanr/CONNECTORS.md +4 -6
  260. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-artifact-shell.mjs +1 -1
  261. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-chunked-workspace-client.mjs +1 -1
  262. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-document.mjs +385 -79
  263. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-handoff.mjs +1 -1
  264. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-resource-pack.mjs +1 -1
  265. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-review.mjs +45 -4
  266. package/lib/host-packages/{claude/openplanr/runtime/design/scripts/design-runtime-support-e34c388a8e59.mjs → openai/openplanr/runtime/design/scripts/design-runtime-support-6774fd3d5d02.mjs} +1 -1
  267. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-share.mjs +8 -5
  268. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-3d9b1a86.mjs +40 -7
  269. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-shared-artifact-support-protocol-contracts-ea2cd15e.mjs +1 -1
  270. package/lib/host-packages/{cursor/openplanr/runtime/design/scripts/design-shared-protocol-contracts-31a760fc.mjs → openai/openplanr/runtime/design/scripts/design-shared-protocol-contracts-b5f28f94.mjs} +284 -45
  271. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-upload-spool.mjs +1 -1
  272. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design.mjs +215 -55
  273. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/02-artifact-review-ui.js +23 -23
  274. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +246 -45
  275. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/06-artifact-review-ui.js +12 -12
  276. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/08-artifact-review-ui.js +47 -14
  277. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +11 -10
  278. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -3
  279. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.css +16 -11
  280. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/01-module-runtime.js +7 -11
  281. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +163 -274
  282. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/03-react-dom-client-fiber-foundations.js +494 -967
  283. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/04-react-dom-client-reconciliation-hooks.js +346 -678
  284. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/05-react-dom-client-render-phases.js +382 -810
  285. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/06-react-dom-client-commit-effects.js +406 -730
  286. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/07-react-dom-client-work-loop-scheduling.js +259 -522
  287. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/08-react-dom-client-dom-events-properties-hydration.js +585 -937
  288. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js +115 -240
  289. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/10-react.js +7 -17
  290. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/11-artifact-review-ui.js +3 -4
  291. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-protocol-contracts.js +215 -0
  292. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-design-review-experience.js +2766 -0
  293. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-studio-shell.js +134 -0
  294. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-canvas-engine.js +2170 -0
  295. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/16-design-review-experience.js +16 -0
  296. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/17-studio-shell.js +8 -0
  297. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/18-interface-primitives.js +3883 -0
  298. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/19-interface-primitives.js +966 -0
  299. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/{16-studio-shell.js → 20-studio-shell.js} +122 -227
  300. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/21-design-studio.js +1583 -0
  301. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +101 -47
  302. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +5 -1
  303. package/lib/host-packages/{cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0 → openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.20.0}/design-document.schema.json +78 -5
  304. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +247 -45
  305. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/design.mjs +45 -12
  306. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +5 -1
  307. package/lib/host-packages/openai/openplanr/skills/connect/references/connectors.md +4 -6
  308. package/lib/host-packages/openai/openplanr/skills/design/SKILL.md +12 -0
  309. package/lib/host-packages/openai/openplanr/skills/design/openplanr.skill.json +11 -0
  310. package/lib/host-packages/openai/openplanr/skills/design/references/craft.md +14 -3
  311. package/lib/host-packages/openai/openplanr/skills/design/references/design-system.md +33 -1
  312. package/lib/host-packages/openai/openplanr/skills/design/references/discovery.md +18 -4
  313. package/lib/host-packages/openai/openplanr/skills/design/references/generation.md +74 -1
  314. package/lib/host-packages/openai/openplanr/skills/design/references/hosted-canvas.md +62 -0
  315. package/lib/host-packages/openai/openplanr/skills/design/references/review.md +46 -1
  316. package/lib/host-packages/openai/openplanr/skills/design/references/utilities.md +6 -0
  317. package/lib/host-packages/openai/openplanr/skills/design/schemas/design-document.schema.json +78 -5
  318. package/lib/host-packages/openai/openplanr/skills/design-loop/references/craft.md +14 -3
  319. package/lib/host-packages/openai/openplanr/skills/design-loop/references/design-system.md +33 -1
  320. package/lib/host-packages/openai/openplanr/skills/design-loop/references/discovery.md +18 -4
  321. package/lib/host-packages/openai/openplanr/skills/design-loop/references/generation.md +74 -1
  322. package/lib/host-packages/openai/openplanr/skills/design-loop/references/review.md +46 -1
  323. package/lib/host-packages/openai/openplanr/skills/design-loop/references/utilities.md +6 -0
  324. package/lib/host-packages/openai/openplanr/skills/design-loop/schemas/design-document.schema.json +78 -5
  325. package/lib/host-packages/openai/openplanr/skills/design-review/references/craft.md +14 -3
  326. package/lib/host-packages/openai/openplanr/skills/design-review/references/design-system.md +33 -1
  327. package/lib/host-packages/openai/openplanr/skills/design-review/references/discovery.md +18 -4
  328. package/lib/host-packages/openai/openplanr/skills/design-review/references/generation.md +74 -1
  329. package/lib/host-packages/openai/openplanr/skills/design-review/references/review.md +46 -1
  330. package/lib/host-packages/openai/openplanr/skills/design-review/references/utilities.md +6 -0
  331. package/lib/host-packages/openai/openplanr/skills/design-review/schemas/design-document.schema.json +78 -5
  332. package/lib/host-packages/openai/openplanr/skills/investigate/SKILL.md +10 -1
  333. package/lib/host-packages/openai/openplanr/skills/investigate/openplanr.skill.json +22 -0
  334. package/lib/host-packages/openai/openplanr/skills/investigate/references/findings.md +92 -0
  335. package/lib/host-packages/openai/openplanr/skills/investigate/scripts/backlog-item.mjs +339 -0
  336. package/lib/host-packages/openai/openplanr/skills/plan/SKILL.md +3 -0
  337. package/lib/host-packages/openai/openplanr/skills/plan/schemas/design-document.schema.json +78 -5
  338. package/lib/host-packages/openai/openplanr/skills/share/references/connectors.md +4 -6
  339. package/lib/host-packages/openai/openplanr/skills/ship/SKILL.md +15 -4
  340. package/lib/host-packages/openai/openplanr/skills/ship/openplanr.skill.json +22 -0
  341. package/lib/host-packages/openai/openplanr/skills/ship/references/findings.md +92 -0
  342. package/lib/host-packages/openai/openplanr/skills/ship/references/result-contract.md +3 -1
  343. package/lib/host-packages/openai/openplanr/skills/ship/scripts/backlog-item.mjs +339 -0
  344. package/lib/host-packages/openai/openplanr/skills/sprint/references/connectors.md +4 -6
  345. package/lib/host-packages/openai/openplanr/skills/status/references/connectors.md +4 -6
  346. package/lib/host-packages/openai/openplanr/skills/sync/references/connectors.md +4 -6
  347. package/package.json +3 -3
  348. package/dist/templates/backlog/backlog-item.md.hbs +0 -40
  349. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-design-review-experience.js +0 -3589
  350. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-studio-shell.js +0 -184
  351. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-interface-primitives.js +0 -5229
  352. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-interface-primitives.js +0 -1733
  353. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/17-design-studio.js +0 -1844
  354. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-design-review-experience.js +0 -3589
  355. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-studio-shell.js +0 -184
  356. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-interface-primitives.js +0 -5229
  357. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-interface-primitives.js +0 -1733
  358. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/17-design-studio.js +0 -1844
  359. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-design-review-experience.js +0 -3589
  360. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-studio-shell.js +0 -184
  361. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-interface-primitives.js +0 -5229
  362. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-interface-primitives.js +0 -1733
  363. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/17-design-studio.js +0 -1844
@@ -1,8 +1,7 @@
1
1
 
2
2
 
3
3
  // ../artifact/lib/artifact/ui/studio-shell-components.mjs
4
- var import_react3 = __toESM(require_react(), 1);
5
- var StudioButton = (0, import_react3.forwardRef)(function StudioButton2({ variant = "default", className = "", type = "button", ...props }, ref) {
4
+ var import_react3 = __toESM(require_react(), 1), StudioButton = (0, import_react3.forwardRef)(function({ variant = "default", className = "", type = "button", ...props }, ref) {
6
5
  return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
7
6
  "button",
8
7
  {
@@ -33,37 +32,29 @@
33
32
  ] }) }) });
34
33
  }
35
34
  function inlineGap(element) {
36
- const view = element?.ownerDocument.defaultView;
37
- return view && element ? parseFloat(view.getComputedStyle(element).gap) || 0 : 0;
35
+ let view = element?.ownerDocument.defaultView;
36
+ return view && element && parseFloat(view.getComputedStyle(element).gap) || 0;
38
37
  }
39
38
  function measureLeadingFloor(leading) {
40
- const view = leading.ownerDocument.defaultView;
39
+ let view = leading.ownerDocument.defaultView;
41
40
  if (!view) return 128;
42
- const leadingControls = [...leading.children].filter(
41
+ let leadingControls = [...leading.children].filter(
43
42
  (node) => node instanceof view.HTMLElement && !node.classList.contains("planr-brand") && node.getClientRects().length > 0
44
- );
45
- const branding = [
43
+ ), branding = [
46
44
  ...leading.querySelectorAll(".planr-mark,.design-wordmark")
47
- ].filter((node) => node.getClientRects().length);
48
- const brandGap = inlineGap(leading.querySelector(".planr-brand"));
49
- const brandingWidth = branding.reduce(
45
+ ].filter((node) => node.getClientRects().length), brandGap = inlineGap(leading.querySelector(".planr-brand")), brandingWidth = branding.reduce(
50
46
  (total, node) => total + node.getBoundingClientRect().width + brandGap,
51
47
  0
52
- );
53
- const titleBlock = leading.querySelector(".planr-title-block");
54
- const badge = titleBlock?.querySelector(".studio-type-badge");
55
- const title = titleBlock?.querySelector("strong,.de-title");
56
- const titleFloor = Math.max(36, parseFloat(view.getComputedStyle(title ?? leading).fontSize) * 3);
57
- const identityFloor = Math.max(
48
+ ), titleBlock = leading.querySelector(".planr-title-block"), badge = titleBlock?.querySelector(".studio-type-badge"), title = titleBlock?.querySelector("strong,.de-title"), titleFloor = Math.max(36, parseFloat(view.getComputedStyle(title ?? leading).fontSize) * 3);
49
+ return Math.max(
58
50
  128,
59
51
  (badge?.getBoundingClientRect().width || 0) + inlineGap(titleBlock) + titleFloor
60
- );
61
- return identityFloor + brandingWidth + leadingControls.reduce((total, control) => total + control.getBoundingClientRect().width, 0) + leadingControls.length * inlineGap(leading);
52
+ ) + brandingWidth + leadingControls.reduce((total, control) => total + control.getBoundingClientRect().width, 0) + leadingControls.length * inlineGap(leading);
62
53
  }
63
54
  function StudioToolbar({
64
55
  title,
65
56
  titleNode,
66
- brand = true,
57
+ brand = !0,
67
58
  as: Tag = "header",
68
59
  kind,
69
60
  hierarchy = [],
@@ -75,80 +66,58 @@
75
66
  secondaryActions,
76
67
  className = ""
77
68
  }) {
78
- const toolbar = (0, import_react3.useRef)(null);
79
- (0, import_react3.useLayoutEffect)(() => {
80
- const element = toolbar.current;
81
- const window2 = element?.ownerDocument.defaultView;
69
+ let toolbar = (0, import_react3.useRef)(null);
70
+ return (0, import_react3.useLayoutEffect)(() => {
71
+ let element = toolbar.current, window2 = element?.ownerDocument.defaultView;
82
72
  if (!element || !window2) return;
83
- const center = element.querySelector(".studio-toolbar-center");
84
- const trailing = element.querySelector(".studio-toolbar-trailing");
85
- const leading2 = element.querySelector(".studio-toolbar-leading");
86
- const secondary = element.querySelector(".studio-toolbar-secondary");
73
+ let center = element.querySelector(".studio-toolbar-center"), trailing = element.querySelector(".studio-toolbar-trailing"), leading2 = element.querySelector(".studio-toolbar-leading"), secondary = element.querySelector(".studio-toolbar-secondary");
87
74
  if (!center || !trailing || !leading2) return;
88
- const measure = () => {
89
- const width = element.getBoundingClientRect().width;
75
+ let measure = () => {
76
+ let width = element.getBoundingClientRect().width;
90
77
  if (!width) return;
91
78
  element.dataset.studioDensity = width <= 680 ? "narrow" : "regular";
92
- const style = window2.getComputedStyle(element);
93
- const available = width - parseFloat(style.paddingLeft) - parseFloat(style.paddingRight);
94
- const gap = Math.max(12, parseFloat(style.columnGap) || 0);
79
+ let style = window2.getComputedStyle(element), available = width - parseFloat(style.paddingLeft) - parseFloat(style.paddingRight), gap = Math.max(12, parseFloat(style.columnGap) || 0);
95
80
  element.dataset.studioCenter = "true";
96
- const centerWidth = center.scrollWidth;
81
+ let centerWidth = center.scrollWidth;
97
82
  element.dataset.studioCenter = String(centerWidth > 0);
98
- const controlSelector = 'button,a,summary,input,select,output,[role="status"]';
99
- const controls = [
83
+ let controlSelector = 'button,a,summary,input,select,output,[role="status"]', controls = [
100
84
  ...trailing.querySelectorAll(controlSelector),
101
85
  ...secondary?.querySelectorAll(controlSelector) ?? []
102
86
  ].filter(
103
87
  (control) => control.getClientRects().length && !control.closest('[role="menu"],.studio-tooltip,[role="dialog"]') && (!control.closest("details") || !!control.closest("summary")) && !control.parentElement?.closest(controlSelector)
104
- );
105
- const actionWidth = controls.reduce((total, control) => {
88
+ ), actionWidth = controls.reduce((total, control) => {
106
89
  if (secondary?.contains(control) && control.getAttribute("role") === "status") {
107
- const range = element.ownerDocument.createRange();
90
+ let range = element.ownerDocument.createRange();
108
91
  range.selectNodeContents(control);
109
- const textWidth = range.getBoundingClientRect().width;
110
- const controlStyle = window2.getComputedStyle(control);
92
+ let textWidth = range.getBoundingClientRect().width, controlStyle = window2.getComputedStyle(control);
111
93
  return total + textWidth + (parseFloat(controlStyle.paddingLeft) || 0) + (parseFloat(controlStyle.paddingRight) || 0);
112
94
  }
113
95
  return total + control.getBoundingClientRect().width;
114
- }, 0) + Math.max(0, controls.length - 1) * (parseFloat(window2.getComputedStyle(trailing).gap) || 8);
115
- const leadingFloor = measureLeadingFloor(leading2);
116
- const outerWidth = Math.max(leadingFloor, actionWidth);
96
+ }, 0) + Math.max(0, controls.length - 1) * (parseFloat(window2.getComputedStyle(trailing).gap) || 8), leadingFloor = measureLeadingFloor(leading2), outerWidth = Math.max(leadingFloor, actionWidth);
117
97
  element.dataset.studioLayout = centerWidth > 0 ? width <= 680 || centerWidth + outerWidth * 2 + gap * 2 > available ? "compact" : "inline" : leadingFloor + actionWidth + gap > available ? "compact" : "inline";
118
98
  };
119
99
  measure();
120
- let frame = 0;
121
- const scheduleMeasure = () => {
122
- if (frame) return;
123
- frame = window2.requestAnimationFrame(() => {
124
- frame = 0;
125
- measure();
126
- });
127
- };
128
- const resize = typeof window2.ResizeObserver === "function" ? new window2.ResizeObserver(scheduleMeasure) : null;
129
- for (const node of [element, center, trailing, secondary]) if (node) resize?.observe(node);
130
- const mutations = new window2.MutationObserver(scheduleMeasure);
100
+ let frame = 0, scheduleMeasure = () => {
101
+ frame || (frame = window2.requestAnimationFrame(() => {
102
+ frame = 0, measure();
103
+ }));
104
+ }, resize = typeof window2.ResizeObserver == "function" ? new window2.ResizeObserver(scheduleMeasure) : null;
105
+ for (let node of [element, center, trailing, secondary]) node && resize?.observe(node);
106
+ let mutations = new window2.MutationObserver(scheduleMeasure);
131
107
  mutations.observe(element, {
132
- subtree: true,
133
- childList: true,
134
- characterData: true,
135
- attributes: true,
108
+ subtree: !0,
109
+ childList: !0,
110
+ characterData: !0,
111
+ attributes: !0,
136
112
  attributeFilter: ["hidden"]
137
- });
138
- window2.addEventListener("resize", scheduleMeasure);
139
- let active = true;
140
- void element.ownerDocument.fonts?.ready.then(() => {
141
- if (active) scheduleMeasure();
142
- });
143
- return () => {
144
- active = false;
145
- resize?.disconnect();
146
- mutations.disconnect();
147
- window2.cancelAnimationFrame(frame);
148
- window2.removeEventListener("resize", scheduleMeasure);
113
+ }), window2.addEventListener("resize", scheduleMeasure);
114
+ let active = !0;
115
+ return element.ownerDocument.fonts?.ready.then(() => {
116
+ active && scheduleMeasure();
117
+ }), () => {
118
+ active = !1, resize?.disconnect(), mutations.disconnect(), window2.cancelAnimationFrame(frame), window2.removeEventListener("resize", scheduleMeasure);
149
119
  };
150
- }, [Tag]);
151
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
120
+ }, [Tag]), /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
152
121
  Tag,
153
122
  {
154
123
  ref: (node) => {
@@ -198,51 +167,37 @@
198
167
  open,
199
168
  onOpenChange
200
169
  }) {
201
- const trigger = (0, import_react3.useRef)(null);
202
- const mousePosition = (0, import_react3.useRef)(null);
203
- const keyboardPosition = (0, import_react3.useRef)(null);
170
+ let trigger = (0, import_react3.useRef)(null), mousePosition = (0, import_react3.useRef)(null), keyboardPosition = (0, import_react3.useRef)(null);
204
171
  (0, import_react3.useLayoutEffect)(() => {
205
- const ownerDocument = trigger.current?.ownerDocument;
172
+ let ownerDocument = trigger.current?.ownerDocument;
206
173
  if (!ownerDocument) return;
207
- const move = (event) => {
174
+ let move = (event) => {
208
175
  if (event.pointerType !== "mouse") return;
209
- const position = { x: event.clientX, y: event.clientY };
210
- const previous = keyboardPosition.current;
211
- if (previous && (previous.x !== position.x || previous.y !== position.y))
212
- keyboardPosition.current = null;
213
- mousePosition.current = position;
214
- };
215
- const down = (event) => {
216
- keyboardPosition.current = null;
217
- if (event.pointerType === "mouse")
218
- mousePosition.current = { x: event.clientX, y: event.clientY };
176
+ let position = { x: event.clientX, y: event.clientY }, previous = keyboardPosition.current;
177
+ previous && (previous.x !== position.x || previous.y !== position.y) && (keyboardPosition.current = null), mousePosition.current = position;
178
+ }, down = (event) => {
179
+ keyboardPosition.current = null, event.pointerType === "mouse" && (mousePosition.current = { x: event.clientX, y: event.clientY });
219
180
  };
220
- ownerDocument.addEventListener("pointermove", move, true);
221
- ownerDocument.addEventListener("pointerdown", down, true);
222
- return () => {
223
- ownerDocument.removeEventListener("pointermove", move, true);
224
- ownerDocument.removeEventListener("pointerdown", down, true);
181
+ return ownerDocument.addEventListener("pointermove", move, !0), ownerDocument.addEventListener("pointerdown", down, !0), () => {
182
+ ownerDocument.removeEventListener("pointermove", move, !0), ownerDocument.removeEventListener("pointerdown", down, !0);
225
183
  };
226
184
  }, []);
227
- const retainKeyboardFocus = (event) => {
228
- const position = keyboardPosition.current;
229
- if (event.pointerType === "mouse" && position?.x === event.clientX && position.y === event.clientY)
230
- event.preventDefault();
231
- };
232
- const keyboardInput = () => {
185
+ let retainKeyboardFocus = (event) => {
186
+ let position = keyboardPosition.current;
187
+ event.pointerType === "mouse" && position?.x === event.clientX && position.y === event.clientY && event.preventDefault();
188
+ }, keyboardInput = () => {
233
189
  keyboardPosition.current = mousePosition.current;
234
190
  };
235
191
  return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
236
192
  dist_exports5.Root,
237
193
  {
238
- modal: false,
194
+ modal: !1,
239
195
  open,
240
196
  onOpenChange: (value) => {
241
- if (!value) keyboardPosition.current = null;
242
- onOpenChange?.(value);
197
+ value || (keyboardPosition.current = null), onOpenChange?.(value);
243
198
  },
244
199
  children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: `studio-menu ${className}`, children: [
245
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(dist_exports5.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
200
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(dist_exports5.Trigger, { asChild: !0, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
246
201
  StudioButton,
247
202
  {
248
203
  "aria-label": label,
@@ -266,17 +221,13 @@
266
221
  onKeyDownCapture: keyboardInput,
267
222
  onCloseAutoFocus: (event) => {
268
223
  event.preventDefault();
269
- const content = event.target;
270
- const ownerDocument = content?.ownerDocument;
271
- const active = ownerDocument?.activeElement;
272
- if (active?.isConnected && active !== ownerDocument?.body && active !== ownerDocument?.documentElement && !content?.contains(active))
273
- return;
274
- if (trigger.current?.isConnected) trigger.current.focus();
224
+ let content = event.target, ownerDocument = content?.ownerDocument, active = ownerDocument?.activeElement;
225
+ active?.isConnected && active !== ownerDocument?.body && active !== ownerDocument?.documentElement && !content?.contains(active) || trigger.current?.isConnected && trigger.current.focus();
275
226
  },
276
227
  children: items.map((item, index2) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
277
228
  dist_exports5.Item,
278
229
  {
279
- asChild: true,
230
+ asChild: !0,
280
231
  disabled: item.disabled,
281
232
  onSelect: item.onSelect,
282
233
  onPointerMove: retainKeyboardFocus,
@@ -320,7 +271,7 @@
320
271
  children: [
321
272
  /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(dist_exports.Title, { className: "planr-visually-hidden", children: title }),
322
273
  /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(dist_exports.Description, { className: "planr-visually-hidden", children: description }),
323
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(dist_exports.Close, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
274
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(dist_exports.Close, { asChild: !0, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
324
275
  StudioButton,
325
276
  {
326
277
  className: "studio-panel-close",
@@ -342,45 +293,31 @@
342
293
  title,
343
294
  state: initial
344
295
  }) {
345
- const document2 = root.ownerDocument;
346
- const window2 = document2.defaultView;
296
+ let document2 = root.ownerDocument, window2 = document2.defaultView;
347
297
  if (!window2) return null;
348
- const old = root.querySelector(".design-toolbar");
298
+ let old = root.querySelector(".design-toolbar");
349
299
  if (!old || old.hasAttribute("data-studio-react-chrome")) return null;
350
- const share = old.querySelector(".design-share");
351
- const showShare = !!share && !share.hidden;
352
- const showExport = !old.querySelector(".design-export")?.hidden;
353
- let state = {
300
+ let share = old.querySelector(".design-share"), showShare = !!share && !share.hidden, showExport = !old.querySelector(".design-export")?.hidden, state = {
354
301
  previewLabel: old.querySelector("[data-design-preview-state]")?.textContent ?? "Loading preview",
355
302
  saveLabel: old.querySelector("[data-design-save-state]")?.textContent ?? "Loading studio",
356
303
  savePhase: "loading",
357
304
  ...initial,
358
- exportMenuOpen: false
359
- };
360
- const listeners = /* @__PURE__ */ new Set();
361
- const update = (value) => {
362
- const next = { ...state, ...value };
363
- if (Object.keys(next).every(
305
+ exportMenuOpen: !1
306
+ }, listeners = /* @__PURE__ */ new Set(), update = (value) => {
307
+ let next = { ...state, ...value };
308
+ Object.keys(next).every(
364
309
  (key) => next[key] === state[key]
365
- ))
366
- return;
367
- state = next;
368
- (0, import_react_dom2.flushSync)(
310
+ ) || (state = next, (0, import_react_dom2.flushSync)(
369
311
  () => listeners.forEach((listener) => {
370
312
  listener();
371
313
  })
372
- );
373
- };
374
- const mount = document2.createElement("div");
375
- mount.className = "studio-chrome-mount";
376
- old.replaceWith(mount);
377
- const react = (0, import_client.createRoot)(mount);
314
+ ));
315
+ }, mount = document2.createElement("div");
316
+ mount.className = "studio-chrome-mount", old.replaceWith(mount);
317
+ let react = (0, import_client.createRoot)(mount);
378
318
  function Chrome() {
379
- const current = (0, import_react4.useSyncExternalStore)(
380
- (listener) => {
381
- listeners.add(listener);
382
- return () => listeners.delete(listener);
383
- },
319
+ let current = (0, import_react4.useSyncExternalStore)(
320
+ (listener) => (listeners.add(listener), () => listeners.delete(listener)),
384
321
  () => state
385
322
  );
386
323
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
@@ -480,94 +417,63 @@
480
417
  );
481
418
  }
482
419
  (0, import_react_dom2.flushSync)(() => react.render(/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Chrome, {})));
483
- const observer = new window2.MutationObserver(() => {
484
- const node = root.querySelector("[data-design-save-state]");
485
- if (node)
486
- update({
487
- saveLabel: node.textContent ?? "",
488
- savePhase: node.dataset.status ?? state.savePhase
489
- });
420
+ let observer = new window2.MutationObserver(() => {
421
+ let node = root.querySelector("[data-design-save-state]");
422
+ node && update({
423
+ saveLabel: node.textContent ?? "",
424
+ savePhase: node.dataset.status ?? state.savePhase
425
+ });
490
426
  });
491
427
  observer.observe(mount, {
492
- subtree: true,
493
- characterData: true,
494
- childList: true,
495
- attributes: true,
428
+ subtree: !0,
429
+ characterData: !0,
430
+ childList: !0,
431
+ attributes: !0,
496
432
  attributeFilter: ["data-status"]
497
- });
498
- root.dataset.studioFramework = "react";
499
- let destroyed = false;
433
+ }), root.dataset.studioFramework = "react";
434
+ let destroyed = !1;
500
435
  return {
501
436
  update,
502
437
  destroy() {
503
- if (destroyed) return;
504
- destroyed = true;
505
- observer.disconnect();
506
- (0, import_react_dom2.flushSync)(() => react.unmount());
507
- mount.replaceWith(old);
508
- delete root.dataset.studioFramework;
438
+ destroyed || (destroyed = !0, observer.disconnect(), (0, import_react_dom2.flushSync)(() => react.unmount()), mount.replaceWith(old), delete root.dataset.studioFramework);
509
439
  }
510
440
  };
511
441
  }
512
442
  function PersistentPanel({ element }) {
513
- const host = (0, import_react4.useRef)(null);
514
- (0, import_react4.useLayoutEffect)(() => {
515
- const target = host.current;
443
+ let host = (0, import_react4.useRef)(null);
444
+ return (0, import_react4.useLayoutEffect)(() => {
445
+ let target = host.current;
516
446
  if (!target) return;
517
- const marker = element.ownerDocument.createComment("studio-panel-home");
518
- element.before(marker);
519
- target.append(element);
520
- return () => {
447
+ let marker = element.ownerDocument.createComment("studio-panel-home");
448
+ return element.before(marker), target.append(element), () => {
521
449
  marker.replaceWith(element);
522
450
  };
523
- }, [element]);
524
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { ref: host, className: "studio-panel-content" });
451
+ }, [element]), /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { ref: host, className: "studio-panel-content" });
525
452
  }
526
453
  function mountStudioPanelDialogs({
527
454
  root,
528
455
  closePanel,
529
456
  breakpoint = 960
530
457
  }) {
531
- const document2 = root.ownerDocument;
532
- const window2 = document2.defaultView;
458
+ let document2 = root.ownerDocument, window2 = document2.defaultView;
533
459
  if (!window2) return { destroy() {
534
460
  } };
535
- const left = root.querySelector(".design-navigator,.diagram-outline");
536
- const right = root.querySelector(".planr-review-rail");
461
+ let left = root.querySelector(".design-navigator,.diagram-outline"), right = root.querySelector(".planr-review-rail");
537
462
  if (!left || !right) return { destroy() {
538
463
  } };
539
- const panels = { left, right };
540
- const mount = document2.createElement("div");
541
- mount.className = "studio-panel-mount";
542
- root.append(mount);
543
- const react = (0, import_client.createRoot)(mount);
544
- let snapshot = "";
545
- let wasCompact = false;
546
- let lastOpenSide = "left";
547
- const listeners = /* @__PURE__ */ new Set();
548
- const read = () => {
549
- const width = root.getBoundingClientRect().width || window2.innerWidth;
550
- const compact = width <= breakpoint;
551
- if (compact && !wasCompact) {
552
- wasCompact = true;
553
- if (root.dataset.outlineOpen === "true") closePanel("left");
554
- }
555
- wasCompact = compact;
556
- const next = width <= breakpoint ? root.dataset.designNavOpen === "true" || root.dataset.outlineOpen === "true" ? "left" : root.dataset.planrRailOpen === "true" ? "right" : "" : "";
557
- if (snapshot !== next) {
558
- if (next) lastOpenSide = next;
559
- snapshot = next;
560
- listeners.forEach((listener) => {
561
- listener();
562
- });
563
- }
464
+ let panels = { left, right }, mount = document2.createElement("div");
465
+ mount.className = "studio-panel-mount", root.append(mount);
466
+ let react = (0, import_client.createRoot)(mount), snapshot = "", wasCompact = !1, lastOpenSide = "left", listeners = /* @__PURE__ */ new Set(), read = () => {
467
+ let width = root.getBoundingClientRect().width || window2.innerWidth, compact = width <= breakpoint;
468
+ compact && !wasCompact && (wasCompact = !0, root.dataset.outlineOpen === "true" && closePanel("left")), wasCompact = compact;
469
+ let next = width <= breakpoint ? root.dataset.designNavOpen === "true" || root.dataset.outlineOpen === "true" ? "left" : root.dataset.planrRailOpen === "true" ? "right" : "" : "";
470
+ snapshot !== next && (next && (lastOpenSide = next), snapshot = next, listeners.forEach((listener) => {
471
+ listener();
472
+ }));
564
473
  };
565
474
  function Panels() {
566
- const side = (0, import_react4.useSyncExternalStore)(
567
- (listener) => {
568
- listeners.add(listener);
569
- return () => listeners.delete(listener);
570
- },
475
+ let side = (0, import_react4.useSyncExternalStore)(
476
+ (listener) => (listeners.add(listener), () => listeners.delete(listener)),
571
477
  () => snapshot
572
478
  );
573
479
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
@@ -578,48 +484,37 @@
578
484
  title: side === "left" ? "Screens" : "Review",
579
485
  container: root,
580
486
  onCloseAutoFocus: (event) => {
581
- event.preventDefault();
582
- root.querySelector(
487
+ event.preventDefault(), root.querySelector(
583
488
  lastOpenSide === "left" ? "[data-design-toggle-nav],[data-action=outline]" : "[data-planr-action=feedback],[data-action=review]"
584
- )?.focus({ preventScroll: true });
489
+ )?.focus({ preventScroll: !0 });
585
490
  },
586
491
  onOpenChange: (open) => {
587
- if (!open && side) closePanel(side);
492
+ !open && side && closePanel(side);
588
493
  },
589
494
  children: side && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(PersistentPanel, { element: panels[side === "left" ? "left" : "right"] }, side)
590
495
  }
591
496
  );
592
497
  }
593
- read();
594
- (0, import_react_dom2.flushSync)(() => react.render(/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Panels, {})));
595
- const observer = new window2.MutationObserver(read);
498
+ read(), (0, import_react_dom2.flushSync)(() => react.render(/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Panels, {})));
499
+ let observer = new window2.MutationObserver(read);
596
500
  observer.observe(root, {
597
- attributes: true,
501
+ attributes: !0,
598
502
  attributeFilter: ["data-design-nav-open", "data-outline-open", "data-planr-rail-open"]
599
503
  });
600
- const resize = typeof window2.ResizeObserver === "function" ? new window2.ResizeObserver(read) : null;
601
- resize?.observe(root);
602
- window2.addEventListener("resize", read);
603
- return {
504
+ let resize = typeof window2.ResizeObserver == "function" ? new window2.ResizeObserver(read) : null;
505
+ return resize?.observe(root), window2.addEventListener("resize", read), {
604
506
  destroy() {
605
- observer.disconnect();
606
- resize?.disconnect();
607
- window2.removeEventListener("resize", read);
608
- (0, import_react_dom2.flushSync)(() => react.unmount());
609
- mount.remove();
507
+ observer.disconnect(), resize?.disconnect(), window2.removeEventListener("resize", read), (0, import_react_dom2.flushSync)(() => react.unmount()), mount.remove();
610
508
  }
611
509
  };
612
510
  }
613
511
  function PreservedNode({ element }) {
614
- const host = (0, import_react4.useRef)(null);
615
- (0, import_react4.useLayoutEffect)(() => {
512
+ let host = (0, import_react4.useRef)(null);
513
+ return (0, import_react4.useLayoutEffect)(() => {
616
514
  if (!element) return;
617
- const marker = element.ownerDocument.createComment("studio-control-home");
618
- element.before(marker);
619
- host.current?.append(element);
620
- return () => {
515
+ let marker = element.ownerDocument.createComment("studio-control-home");
516
+ return element.before(marker), host.current?.append(element), () => {
621
517
  marker.replaceWith(element);
622
518
  };
623
- }, [element]);
624
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { ref: host, className: "studio-preserved-control" });
519
+ }, [element]), /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { ref: host, className: "studio-preserved-control" });
625
520
  }