@joewinke/jatui 0.36.3 → 0.38.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 (271) hide show
  1. package/dist/artifact-blocks/AttachmentChip.svelte +66 -0
  2. package/dist/artifact-blocks/AttachmentChip.svelte.d.ts +7 -0
  3. package/dist/artifact-blocks/BlockComments.svelte +309 -0
  4. package/dist/artifact-blocks/BlockComments.svelte.d.ts +33 -0
  5. package/dist/artifact-blocks/BlockRenderer.svelte +674 -0
  6. package/dist/artifact-blocks/BlockRenderer.svelte.d.ts +55 -0
  7. package/dist/artifact-blocks/BlockVerdict.svelte +151 -0
  8. package/dist/artifact-blocks/BlockVerdict.svelte.d.ts +13 -0
  9. package/dist/artifact-blocks/BlocksArtifactView.svelte +1616 -0
  10. package/dist/artifact-blocks/BlocksArtifactView.svelte.d.ts +113 -0
  11. package/dist/artifact-blocks/CONTRACT.md +225 -0
  12. package/dist/artifact-blocks/CommentPill.svelte +49 -0
  13. package/dist/artifact-blocks/CommentPill.svelte.d.ts +16 -0
  14. package/dist/artifact-blocks/FoldedRounds.svelte +95 -0
  15. package/dist/artifact-blocks/FoldedRounds.svelte.d.ts +9 -0
  16. package/dist/artifact-blocks/Glyph.svelte +54 -0
  17. package/dist/artifact-blocks/Glyph.svelte.d.ts +10 -0
  18. package/dist/artifact-blocks/HistoryScrubber.svelte +500 -0
  19. package/dist/artifact-blocks/HistoryScrubber.svelte.d.ts +15 -0
  20. package/dist/artifact-blocks/Markdown.svelte +186 -0
  21. package/dist/artifact-blocks/Markdown.svelte.d.ts +30 -0
  22. package/dist/artifact-blocks/NoteComposer.svelte +31 -0
  23. package/dist/artifact-blocks/NoteComposer.svelte.d.ts +8 -0
  24. package/dist/artifact-blocks/PlainComposer.svelte +200 -0
  25. package/dist/artifact-blocks/PlainComposer.svelte.d.ts +15 -0
  26. package/dist/artifact-blocks/SectionTools.svelte +102 -0
  27. package/dist/artifact-blocks/SectionTools.svelte.d.ts +19 -0
  28. package/dist/artifact-blocks/adapter.d.ts +13 -0
  29. package/dist/artifact-blocks/adapter.js +31 -0
  30. package/dist/artifact-blocks/autoSend.d.ts +49 -0
  31. package/dist/artifact-blocks/autoSend.js +103 -0
  32. package/dist/artifact-blocks/blocks/actions/ActionsBlock.svelte +557 -0
  33. package/dist/artifact-blocks/blocks/actions/ActionsBlock.svelte.d.ts +48 -0
  34. package/dist/artifact-blocks/blocks/actions/block.d.ts +8 -0
  35. package/dist/artifact-blocks/blocks/actions/block.js +74 -0
  36. package/dist/artifact-blocks/blocks/actions/requests.d.ts +62 -0
  37. package/dist/artifact-blocks/blocks/actions/requests.js +26 -0
  38. package/dist/artifact-blocks/blocks/actions/schema.d.ts +168 -0
  39. package/dist/artifact-blocks/blocks/actions/schema.js +253 -0
  40. package/dist/artifact-blocks/blocks/callout/CalloutBlock.svelte +779 -0
  41. package/dist/artifact-blocks/blocks/callout/CalloutBlock.svelte.d.ts +40 -0
  42. package/dist/artifact-blocks/blocks/callout/block.d.ts +7 -0
  43. package/dist/artifact-blocks/blocks/callout/block.js +39 -0
  44. package/dist/artifact-blocks/blocks/callout/schema.d.ts +72 -0
  45. package/dist/artifact-blocks/blocks/callout/schema.js +115 -0
  46. package/dist/artifact-blocks/blocks/chart/ChartBlock.svelte +875 -0
  47. package/dist/artifact-blocks/blocks/chart/ChartBlock.svelte.d.ts +59 -0
  48. package/dist/artifact-blocks/blocks/chart/block.d.ts +9 -0
  49. package/dist/artifact-blocks/blocks/chart/block.js +70 -0
  50. package/dist/artifact-blocks/blocks/chart/schema.d.ts +171 -0
  51. package/dist/artifact-blocks/blocks/chart/schema.js +498 -0
  52. package/dist/artifact-blocks/blocks/chart/thumb.d.ts +2 -0
  53. package/dist/artifact-blocks/blocks/chart/thumb.js +201 -0
  54. package/dist/artifact-blocks/blocks/checklist/ChecklistBlock.svelte +1048 -0
  55. package/dist/artifact-blocks/blocks/checklist/ChecklistBlock.svelte.d.ts +16 -0
  56. package/dist/artifact-blocks/blocks/checklist/Icon.svelte +105 -0
  57. package/dist/artifact-blocks/blocks/checklist/Icon.svelte.d.ts +17 -0
  58. package/dist/artifact-blocks/blocks/checklist/block.d.ts +10 -0
  59. package/dist/artifact-blocks/blocks/checklist/block.js +63 -0
  60. package/dist/artifact-blocks/blocks/checklist/itemReview.d.ts +16 -0
  61. package/dist/artifact-blocks/blocks/checklist/itemReview.js +63 -0
  62. package/dist/artifact-blocks/blocks/checklist/labels.d.ts +62 -0
  63. package/dist/artifact-blocks/blocks/checklist/labels.js +96 -0
  64. package/dist/artifact-blocks/blocks/checklist/retest.d.ts +43 -0
  65. package/dist/artifact-blocks/blocks/checklist/retest.js +68 -0
  66. package/dist/artifact-blocks/blocks/checklist/schema.d.ts +84 -0
  67. package/dist/artifact-blocks/blocks/checklist/schema.js +91 -0
  68. package/dist/artifact-blocks/blocks/code/CodeBlock.svelte +128 -0
  69. package/dist/artifact-blocks/blocks/code/CodeBlock.svelte.d.ts +12 -0
  70. package/dist/artifact-blocks/blocks/code/block.d.ts +8 -0
  71. package/dist/artifact-blocks/blocks/code/block.js +31 -0
  72. package/dist/artifact-blocks/blocks/code/highlight.d.ts +34 -0
  73. package/dist/artifact-blocks/blocks/code/highlight.js +280 -0
  74. package/dist/artifact-blocks/blocks/code/schema.d.ts +32 -0
  75. package/dist/artifact-blocks/blocks/code/schema.js +39 -0
  76. package/dist/artifact-blocks/blocks/collage/CollageBlock.svelte +290 -0
  77. package/dist/artifact-blocks/blocks/collage/CollageBlock.svelte.d.ts +29 -0
  78. package/dist/artifact-blocks/blocks/collage/block.d.ts +9 -0
  79. package/dist/artifact-blocks/blocks/collage/block.js +29 -0
  80. package/dist/artifact-blocks/blocks/collage/schema.d.ts +52 -0
  81. package/dist/artifact-blocks/blocks/collage/schema.js +86 -0
  82. package/dist/artifact-blocks/blocks/compare/CompareBlock.svelte +484 -0
  83. package/dist/artifact-blocks/blocks/compare/CompareBlock.svelte.d.ts +25 -0
  84. package/dist/artifact-blocks/blocks/compare/block.d.ts +9 -0
  85. package/dist/artifact-blocks/blocks/compare/block.js +32 -0
  86. package/dist/artifact-blocks/blocks/compare/schema.d.ts +74 -0
  87. package/dist/artifact-blocks/blocks/compare/schema.js +148 -0
  88. package/dist/artifact-blocks/blocks/diagram/DiagramBlock.svelte +392 -0
  89. package/dist/artifact-blocks/blocks/diagram/DiagramBlock.svelte.d.ts +30 -0
  90. package/dist/artifact-blocks/blocks/diagram/block.d.ts +9 -0
  91. package/dist/artifact-blocks/blocks/diagram/block.js +50 -0
  92. package/dist/artifact-blocks/blocks/diagram/constants.d.ts +48 -0
  93. package/dist/artifact-blocks/blocks/diagram/constants.js +53 -0
  94. package/dist/artifact-blocks/blocks/diagram/schema.d.ts +161 -0
  95. package/dist/artifact-blocks/blocks/diagram/schema.js +621 -0
  96. package/dist/artifact-blocks/blocks/diagram/thumb.d.ts +2 -0
  97. package/dist/artifact-blocks/blocks/diagram/thumb.js +157 -0
  98. package/dist/artifact-blocks/blocks/diagram/types.d.ts +74 -0
  99. package/dist/artifact-blocks/blocks/diagram/types.js +1 -0
  100. package/dist/artifact-blocks/blocks/diff/DiffBlock.svelte +81 -0
  101. package/dist/artifact-blocks/blocks/diff/DiffBlock.svelte.d.ts +10 -0
  102. package/dist/artifact-blocks/blocks/diff/block.d.ts +7 -0
  103. package/dist/artifact-blocks/blocks/diff/block.js +36 -0
  104. package/dist/artifact-blocks/blocks/diff/schema.d.ts +18 -0
  105. package/dist/artifact-blocks/blocks/diff/schema.js +35 -0
  106. package/dist/artifact-blocks/blocks/diff-review/DiffReviewBlock.svelte +1055 -0
  107. package/dist/artifact-blocks/blocks/diff-review/DiffReviewBlock.svelte.d.ts +5 -0
  108. package/dist/artifact-blocks/blocks/diff-review/block.d.ts +15 -0
  109. package/dist/artifact-blocks/blocks/diff-review/block.js +64 -0
  110. package/dist/artifact-blocks/blocks/diff-review/decisions.d.ts +57 -0
  111. package/dist/artifact-blocks/blocks/diff-review/decisions.js +80 -0
  112. package/dist/artifact-blocks/blocks/diff-review/schema.d.ts +13 -0
  113. package/dist/artifact-blocks/blocks/diff-review/schema.js +84 -0
  114. package/dist/artifact-blocks/blocks/diff-review/types.d.ts +35 -0
  115. package/dist/artifact-blocks/blocks/diff-review/types.js +1 -0
  116. package/dist/artifact-blocks/blocks/explainer/ExplainerBlock.svelte +145 -0
  117. package/dist/artifact-blocks/blocks/explainer/ExplainerBlock.svelte.d.ts +5 -0
  118. package/dist/artifact-blocks/blocks/explainer/block.d.ts +8 -0
  119. package/dist/artifact-blocks/blocks/explainer/block.js +21 -0
  120. package/dist/artifact-blocks/blocks/explainer/schema.d.ts +26 -0
  121. package/dist/artifact-blocks/blocks/explainer/schema.js +69 -0
  122. package/dist/artifact-blocks/blocks/group-content.d.ts +10 -0
  123. package/dist/artifact-blocks/blocks/group-content.js +16 -0
  124. package/dist/artifact-blocks/blocks/group-data.d.ts +10 -0
  125. package/dist/artifact-blocks/blocks/group-data.js +7 -0
  126. package/dist/artifact-blocks/blocks/group-review.d.ts +10 -0
  127. package/dist/artifact-blocks/blocks/group-review.js +12 -0
  128. package/dist/artifact-blocks/blocks/group-visual.d.ts +17 -0
  129. package/dist/artifact-blocks/blocks/group-visual.js +14 -0
  130. package/dist/artifact-blocks/blocks/map/MapBlock.svelte +413 -0
  131. package/dist/artifact-blocks/blocks/map/MapBlock.svelte.d.ts +53 -0
  132. package/dist/artifact-blocks/blocks/map/block.d.ts +9 -0
  133. package/dist/artifact-blocks/blocks/map/block.js +62 -0
  134. package/dist/artifact-blocks/blocks/map/schema.d.ts +123 -0
  135. package/dist/artifact-blocks/blocks/map/schema.js +113 -0
  136. package/dist/artifact-blocks/blocks/map/thumb.d.ts +2 -0
  137. package/dist/artifact-blocks/blocks/map/thumb.js +69 -0
  138. package/dist/artifact-blocks/blocks/markdown/MarkdownBlock.svelte +33 -0
  139. package/dist/artifact-blocks/blocks/markdown/MarkdownBlock.svelte.d.ts +15 -0
  140. package/dist/artifact-blocks/blocks/markdown/block.d.ts +7 -0
  141. package/dist/artifact-blocks/blocks/markdown/block.js +28 -0
  142. package/dist/artifact-blocks/blocks/markdown/render.d.ts +17 -0
  143. package/dist/artifact-blocks/blocks/markdown/render.js +115 -0
  144. package/dist/artifact-blocks/blocks/markdown/schema.d.ts +10 -0
  145. package/dist/artifact-blocks/blocks/markdown/schema.js +23 -0
  146. package/dist/artifact-blocks/blocks/media-picker/MediaPickerBlock.svelte +2112 -0
  147. package/dist/artifact-blocks/blocks/media-picker/MediaPickerBlock.svelte.d.ts +5 -0
  148. package/dist/artifact-blocks/blocks/media-picker/block.d.ts +24 -0
  149. package/dist/artifact-blocks/blocks/media-picker/block.js +137 -0
  150. package/dist/artifact-blocks/blocks/media-picker/choices.d.ts +28 -0
  151. package/dist/artifact-blocks/blocks/media-picker/choices.js +35 -0
  152. package/dist/artifact-blocks/blocks/media-picker/decisions.d.ts +51 -0
  153. package/dist/artifact-blocks/blocks/media-picker/decisions.js +75 -0
  154. package/dist/artifact-blocks/blocks/media-picker/schema.d.ts +7 -0
  155. package/dist/artifact-blocks/blocks/media-picker/schema.js +199 -0
  156. package/dist/artifact-blocks/blocks/media-picker/types.d.ts +92 -0
  157. package/dist/artifact-blocks/blocks/media-picker/types.js +1 -0
  158. package/dist/artifact-blocks/blocks/media-picker/versions.d.ts +51 -0
  159. package/dist/artifact-blocks/blocks/media-picker/versions.js +118 -0
  160. package/dist/artifact-blocks/blocks/mockup/MockupBlock.svelte +213 -0
  161. package/dist/artifact-blocks/blocks/mockup/MockupBlock.svelte.d.ts +5 -0
  162. package/dist/artifact-blocks/blocks/mockup/block.d.ts +26 -0
  163. package/dist/artifact-blocks/blocks/mockup/block.js +52 -0
  164. package/dist/artifact-blocks/blocks/mockup/doc.d.ts +24 -0
  165. package/dist/artifact-blocks/blocks/mockup/doc.js +44 -0
  166. package/dist/artifact-blocks/blocks/mockup/sandbox.d.ts +21 -0
  167. package/dist/artifact-blocks/blocks/mockup/sandbox.js +27 -0
  168. package/dist/artifact-blocks/blocks/mockup/schema.d.ts +7 -0
  169. package/dist/artifact-blocks/blocks/mockup/schema.js +90 -0
  170. package/dist/artifact-blocks/blocks/mockup/types.d.ts +36 -0
  171. package/dist/artifact-blocks/blocks/mockup/types.js +17 -0
  172. package/dist/artifact-blocks/blocks/program/ProgramBlock.svelte +359 -0
  173. package/dist/artifact-blocks/blocks/program/ProgramBlock.svelte.d.ts +32 -0
  174. package/dist/artifact-blocks/blocks/program/block.d.ts +35 -0
  175. package/dist/artifact-blocks/blocks/program/block.js +68 -0
  176. package/dist/artifact-blocks/blocks/program/schema.d.ts +132 -0
  177. package/dist/artifact-blocks/blocks/program/schema.js +268 -0
  178. package/dist/artifact-blocks/blocks/stats/StatsBlock.svelte +315 -0
  179. package/dist/artifact-blocks/blocks/stats/StatsBlock.svelte.d.ts +24 -0
  180. package/dist/artifact-blocks/blocks/stats/block.d.ts +7 -0
  181. package/dist/artifact-blocks/blocks/stats/block.js +49 -0
  182. package/dist/artifact-blocks/blocks/stats/schema.d.ts +82 -0
  183. package/dist/artifact-blocks/blocks/stats/schema.js +43 -0
  184. package/dist/artifact-blocks/blocks/stats/thumb.d.ts +2 -0
  185. package/dist/artifact-blocks/blocks/stats/thumb.js +102 -0
  186. package/dist/artifact-blocks/blocks/table/TableBlock.svelte +490 -0
  187. package/dist/artifact-blocks/blocks/table/TableBlock.svelte.d.ts +28 -0
  188. package/dist/artifact-blocks/blocks/table/block.d.ts +9 -0
  189. package/dist/artifact-blocks/blocks/table/block.js +100 -0
  190. package/dist/artifact-blocks/blocks/table/schema.d.ts +143 -0
  191. package/dist/artifact-blocks/blocks/table/schema.js +278 -0
  192. package/dist/artifact-blocks/blocks/timeline/TimelineBlock.svelte +347 -0
  193. package/dist/artifact-blocks/blocks/timeline/TimelineBlock.svelte.d.ts +42 -0
  194. package/dist/artifact-blocks/blocks/timeline/block.d.ts +9 -0
  195. package/dist/artifact-blocks/blocks/timeline/block.js +96 -0
  196. package/dist/artifact-blocks/blocks/timeline/constants.d.ts +26 -0
  197. package/dist/artifact-blocks/blocks/timeline/constants.js +27 -0
  198. package/dist/artifact-blocks/blocks/timeline/schema.d.ts +102 -0
  199. package/dist/artifact-blocks/blocks/timeline/schema.js +405 -0
  200. package/dist/artifact-blocks/blocks/timeline/thumb.d.ts +2 -0
  201. package/dist/artifact-blocks/blocks/timeline/thumb.js +117 -0
  202. package/dist/artifact-blocks/blocks/timeline/types.d.ts +66 -0
  203. package/dist/artifact-blocks/blocks/timeline/types.js +1 -0
  204. package/dist/artifact-blocks/blocks/transcript/TranscriptBlock.svelte +169 -0
  205. package/dist/artifact-blocks/blocks/transcript/TranscriptBlock.svelte.d.ts +26 -0
  206. package/dist/artifact-blocks/blocks/transcript/block.d.ts +9 -0
  207. package/dist/artifact-blocks/blocks/transcript/block.js +86 -0
  208. package/dist/artifact-blocks/blocks/transcript/schema.d.ts +114 -0
  209. package/dist/artifact-blocks/blocks/transcript/schema.js +126 -0
  210. package/dist/artifact-blocks/builtins.d.ts +40 -0
  211. package/dist/artifact-blocks/builtins.js +22 -0
  212. package/dist/artifact-blocks/contractBlocks.d.ts +92 -0
  213. package/dist/artifact-blocks/contractBlocks.js +279 -0
  214. package/dist/artifact-blocks/history.d.ts +140 -0
  215. package/dist/artifact-blocks/history.js +363 -0
  216. package/dist/artifact-blocks/index.d.ts +40 -0
  217. package/dist/artifact-blocks/index.js +46 -0
  218. package/dist/artifact-blocks/listen/context.d.ts +30 -0
  219. package/dist/artifact-blocks/listen/context.js +30 -0
  220. package/dist/artifact-blocks/liveData.d.ts +78 -0
  221. package/dist/artifact-blocks/liveData.js +137 -0
  222. package/dist/artifact-blocks/liveDataPoller.d.ts +41 -0
  223. package/dist/artifact-blocks/liveDataPoller.js +140 -0
  224. package/dist/artifact-blocks/openNav.d.ts +46 -0
  225. package/dist/artifact-blocks/openNav.js +106 -0
  226. package/dist/artifact-blocks/pageReviewKeys.d.ts +17 -0
  227. package/dist/artifact-blocks/pageReviewKeys.js +115 -0
  228. package/dist/artifact-blocks/params.d.ts +98 -0
  229. package/dist/artifact-blocks/params.js +159 -0
  230. package/dist/artifact-blocks/registry.d.ts +27 -0
  231. package/dist/artifact-blocks/registry.js +83 -0
  232. package/dist/artifact-blocks/review/BlockIcon.svelte +99 -0
  233. package/dist/artifact-blocks/review/BlockIcon.svelte.d.ts +17 -0
  234. package/dist/artifact-blocks/review/BulkRejectForm.svelte +94 -0
  235. package/dist/artifact-blocks/review/BulkRejectForm.svelte.d.ts +11 -0
  236. package/dist/artifact-blocks/review/BulkUndoBar.svelte +40 -0
  237. package/dist/artifact-blocks/review/BulkUndoBar.svelte.d.ts +9 -0
  238. package/dist/artifact-blocks/review/ItemNote.svelte +193 -0
  239. package/dist/artifact-blocks/review/ItemNote.svelte.d.ts +33 -0
  240. package/dist/artifact-blocks/review/NoteToggle.svelte +52 -0
  241. package/dist/artifact-blocks/review/NoteToggle.svelte.d.ts +12 -0
  242. package/dist/artifact-blocks/review/TeamChip.svelte +71 -0
  243. package/dist/artifact-blocks/review/TeamChip.svelte.d.ts +8 -0
  244. package/dist/artifact-blocks/review/attachments.d.ts +10 -0
  245. package/dist/artifact-blocks/review/attachments.js +37 -0
  246. package/dist/artifact-blocks/review/bulk.d.ts +52 -0
  247. package/dist/artifact-blocks/review/bulk.js +61 -0
  248. package/dist/artifact-blocks/review/itemReview.d.ts +33 -0
  249. package/dist/artifact-blocks/review/itemReview.js +112 -0
  250. package/dist/artifact-blocks/review/roundLines.d.ts +14 -0
  251. package/dist/artifact-blocks/review/roundLines.js +20 -0
  252. package/dist/artifact-blocks/review/rounds.d.ts +86 -0
  253. package/dist/artifact-blocks/review/rounds.js +302 -0
  254. package/dist/artifact-blocks/review/saver.d.ts +23 -0
  255. package/dist/artifact-blocks/review/saver.js +48 -0
  256. package/dist/artifact-blocks/review/team.d.ts +31 -0
  257. package/dist/artifact-blocks/review/team.js +42 -0
  258. package/dist/artifact-blocks/review/visualOrder.d.ts +29 -0
  259. package/dist/artifact-blocks/review/visualOrder.js +66 -0
  260. package/dist/artifact-blocks/review.d.ts +180 -0
  261. package/dist/artifact-blocks/review.js +716 -0
  262. package/dist/artifact-blocks/thumb-kit.d.ts +80 -0
  263. package/dist/artifact-blocks/thumb-kit.js +149 -0
  264. package/dist/artifact-blocks/types.d.ts +513 -0
  265. package/dist/artifact-blocks/types.js +1 -0
  266. package/dist/components/Button.svelte +8 -0
  267. package/dist/components/TextInput.svelte +39 -6
  268. package/dist/components/TextInput.svelte.d.ts +15 -7
  269. package/dist/components/basic/Checkbox.svelte +52 -14
  270. package/dist/components/basic/Checkbox.svelte.d.ts +11 -1
  271. package/package.json +11 -2
@@ -0,0 +1,40 @@
1
+ import type { BlockProps } from "../../types.js";
2
+ declare const CalloutBlock: import("svelte").Component<BlockProps<{
3
+ variant: "warn" | "success" | "note" | "decision";
4
+ title?: string | undefined;
5
+ body?: string | undefined;
6
+ question?: string | undefined;
7
+ options?: {
8
+ id: string;
9
+ label: string;
10
+ letter?: string | undefined;
11
+ detail?: string | undefined;
12
+ }[] | undefined;
13
+ recommended?: string | undefined;
14
+ allowOther?: boolean | undefined;
15
+ commentLabel?: string | undefined;
16
+ allowComment?: boolean | undefined;
17
+ meta?: {
18
+ label: string;
19
+ value: string;
20
+ href?: string | undefined;
21
+ title?: string | undefined;
22
+ tone?: "error" | "warning" | "info" | "success" | "neutral" | undefined;
23
+ }[] | undefined;
24
+ sections?: {
25
+ heading: string;
26
+ markdown: string;
27
+ open?: boolean | undefined;
28
+ }[] | undefined;
29
+ primaryAction?: {
30
+ label: string;
31
+ url: string;
32
+ } | undefined;
33
+ group?: {
34
+ key: string;
35
+ label: string;
36
+ quiet?: boolean | undefined;
37
+ } | undefined;
38
+ }>, {}, "">;
39
+ type CalloutBlock = ReturnType<typeof CalloutBlock>;
40
+ export default CalloutBlock;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * callout block — note/warn/success banners + interactive decision.
3
+ */
4
+ import type { ArtifactBlockDef } from "../../types.js";
5
+ import { type CalloutParams } from "./schema.js";
6
+ declare const def: ArtifactBlockDef<CalloutParams>;
7
+ export default def;
@@ -0,0 +1,39 @@
1
+ import CalloutBlock from "./CalloutBlock.svelte";
2
+ import { calloutSchema } from "./schema.js";
3
+ const EXAMPLE = {
4
+ variant: "decision",
5
+ title: "Ruby rollout",
6
+ body: "Support needs **two weeks** after training before calls go live, and the carrier port finishes October 28.",
7
+ question: "Which go-live date should we commit to?",
8
+ options: [
9
+ { id: "nov-1", label: "November 1" },
10
+ { id: "nov-15", label: "November 15" },
11
+ { id: "dec-1", label: "December 1" },
12
+ ],
13
+ allowOther: true,
14
+ commentLabel: "Anything we should know about the date",
15
+ meta: [
16
+ { label: "asked by", value: "Support lead" },
17
+ { label: "priority", value: "P1", tone: "warning" },
18
+ { label: "task", value: "ops-12ab3", href: "/tasks?task=ops-12ab3" },
19
+ ],
20
+ primaryAction: { label: "Open the training plan", url: "https://example.com/training" },
21
+ sections: [
22
+ {
23
+ heading: "What was done",
24
+ markdown: "- Carrier port booked for **October 28**\n- Training sessions drafted for both shifts",
25
+ },
26
+ { heading: "Context", markdown: "The two-week buffer comes from last year's rollout." },
27
+ ],
28
+ };
29
+ const def = {
30
+ type: "callout",
31
+ title: "Callout / decision",
32
+ description: "Banners and one interactive question. variant note|warn|success renders an info/warning/success alert with an optional markdown body (through the shared sanitized renderer) — use for context, caveats, confirmations. variant decision asks the viewer a question with 2-6 options (ids lowercase a-z0-9_-, labels ≤120 chars), an optional 'other' free-text choice (allowOther) and an optional comment box (allowComment:false removes it). When the comment box exists it doubles as the Other explanation: picking Other relabels it 'Say what instead' and focuses it, and its text saves to BOTH state.other and state.comment so readers of either keep working; without a comment box the Other text comes from a dedicated 'Say which' input into state.other. Saving is automatic and every save is a per-viewer DRAFT — no button: picking an option saves at once (arrow keys move, space/enter pick), switching options re-saves, and the note and Other text autosave ~800ms after typing stops and on blur, per viewer via ctx.saveState as { pick, other?, comment?, at? } — drafts survive a reload, and the page's Finish review sends them. A card with a saved answer shows the done treatment (success border + 'Draft: <choice>' chip); a save in flight or failed shows a small Saving…/error+Retry state and never loses the viewer's pick. It renders read-only (disabled) where saving is impossible. NEEDS YOU fields (decision only, all optional, none answerable — links navigate, they never save a verdict): meta [{label ≤24, value ≤80, href? http(s)/root-relative, title? hover text, tone? neutral|info|success|warning|error}] ≤8 as one compact row under the question; primaryAction {label ≤60, url} as the card's primary link button above the options (off-origin opens a new tab); sections [{heading ≤60, markdown, open?}] ≤8 as collapsed <details> below the note, sharing the 20,000-char body budget — when sections are present the body is NOT rendered (it is their flattened fallback for older renderers); group {key [a-z0-9-]{1,32}, label ≤60, quiet?} puts the card under a group header the renderer draws between cards. Tip: one decision per callout; title names the topic, body gives the reasoning, question is the ask (it renders as the lead line), so they never repeat each other.",
33
+ schema: calloutSchema,
34
+ component: CalloutBlock,
35
+ // mos-8fvt9: the section's Listen + comment sit on the heading row.
36
+ hostsTools: () => true,
37
+ example: EXAMPLE,
38
+ };
39
+ export default def;
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Params schema for the callout block (note/warn/success/decision).
3
+ */
4
+ import { z } from "zod";
5
+ export declare const calloutSchema: z.ZodObject<{
6
+ variant: z.ZodEnum<{
7
+ warn: "warn";
8
+ success: "success";
9
+ note: "note";
10
+ decision: "decision";
11
+ }>;
12
+ title: z.ZodOptional<z.ZodString>;
13
+ body: z.ZodOptional<z.ZodString>;
14
+ question: z.ZodOptional<z.ZodString>;
15
+ options: z.ZodOptional<z.ZodArray<z.ZodObject<{
16
+ id: z.ZodString;
17
+ label: z.ZodString;
18
+ letter: z.ZodOptional<z.ZodString>;
19
+ detail: z.ZodOptional<z.ZodString>;
20
+ }, z.core.$strip>>>;
21
+ recommended: z.ZodOptional<z.ZodString>;
22
+ allowOther: z.ZodOptional<z.ZodBoolean>;
23
+ commentLabel: z.ZodOptional<z.ZodString>;
24
+ allowComment: z.ZodOptional<z.ZodBoolean>;
25
+ meta: z.ZodOptional<z.ZodArray<z.ZodObject<{
26
+ label: z.ZodString;
27
+ value: z.ZodString;
28
+ href: z.ZodOptional<z.ZodString>;
29
+ title: z.ZodOptional<z.ZodString>;
30
+ tone: z.ZodOptional<z.ZodEnum<{
31
+ error: "error";
32
+ warning: "warning";
33
+ info: "info";
34
+ success: "success";
35
+ neutral: "neutral";
36
+ }>>;
37
+ }, z.core.$strip>>>;
38
+ sections: z.ZodOptional<z.ZodArray<z.ZodObject<{
39
+ heading: z.ZodString;
40
+ markdown: z.ZodString;
41
+ open: z.ZodOptional<z.ZodBoolean>;
42
+ }, z.core.$strip>>>;
43
+ primaryAction: z.ZodOptional<z.ZodObject<{
44
+ label: z.ZodString;
45
+ url: z.ZodString;
46
+ }, z.core.$strip>>;
47
+ group: z.ZodOptional<z.ZodObject<{
48
+ key: z.ZodString;
49
+ label: z.ZodString;
50
+ quiet: z.ZodOptional<z.ZodBoolean>;
51
+ }, z.core.$strip>>;
52
+ }, z.core.$strip>;
53
+ /**
54
+ * Reserved pick id for the "Other" free-text choice. Option ids can never
55
+ * collide with it: the id regex forbids a leading underscore.
56
+ */
57
+ export declare const OTHER_ID = "__other__";
58
+ /** Per-viewer state a decision callout saves through ctx.saveState. */
59
+ export interface CalloutState {
60
+ /** Chosen option id, or OTHER_ID for the free-text "Other" choice. */
61
+ pick?: string;
62
+ /** The viewer's text when pick === OTHER_ID. */
63
+ other?: string;
64
+ /** Optional comment from the comment box. */
65
+ comment?: string;
66
+ /** The note's voice/video/screen/file attachments (mos-rccb5) —
67
+ * descriptors in the artifact's private asset store. */
68
+ attachments?: import("../../review/attachments.js").NoteAttachment[];
69
+ /** ISO timestamp of the last save. */
70
+ at?: string;
71
+ }
72
+ export type CalloutParams = z.infer<typeof calloutSchema>;
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Params schema for the callout block (note/warn/success/decision).
3
+ */
4
+ import { z } from "zod";
5
+ import { DECISION_BODY_BUDGET, blockGroupSchema, decisionMetaSchema, decisionPrimaryActionSchema, decisionSectionsSchema, } from "../../contractBlocks.js";
6
+ const calloutVariantSchema = z.enum(["note", "warn", "success", "decision"]);
7
+ const calloutOptionSchema = z.object({
8
+ /** Stable id the viewer's pick is stored under (lowercase a-z0-9_-). */
9
+ id: z
10
+ .string()
11
+ .regex(/^[a-z0-9][a-z0-9_-]{0,63}$/, "option id must be lowercase a-z0-9_- (max 64)"),
12
+ label: z.string().min(1, "option label is required").max(120),
13
+ /** The contract letter this option answers to (mos-4tgfj). Absent = its
14
+ * position (A, B, C…). Set on cards published as a contract `decision`. */
15
+ letter: z
16
+ .string()
17
+ .regex(/^[A-Z]$/, "letter must be one capital A-Z")
18
+ .optional(),
19
+ /** A muted second line under the label. */
20
+ detail: z.string().max(300).optional(),
21
+ });
22
+ const CALLOUT_BODY_MAX_CHARS = 20_000;
23
+ export const calloutSchema = z
24
+ .object({
25
+ variant: calloutVariantSchema,
26
+ title: z.string().min(1).max(120).optional(),
27
+ /** Markdown, rendered through the shared sanitized renderer. */
28
+ body: z.string().max(CALLOUT_BODY_MAX_CHARS).optional(),
29
+ /** decision only — the question asked of the viewer. */
30
+ question: z.string().min(1).max(500).optional(),
31
+ /** decision only — 2-6 options the viewer picks between (up to 26 when
32
+ * every option carries its contract letter). */
33
+ options: z
34
+ .array(calloutOptionSchema)
35
+ .min(2, "at least 2 options")
36
+ .max(26, "at most 26 options")
37
+ .optional(),
38
+ /** decision only — the letter the publisher recommends (a badge). */
39
+ recommended: z
40
+ .string()
41
+ .regex(/^[A-Z]$/, "recommended must be one capital A-Z")
42
+ .optional(),
43
+ /** decision only — adds an "Other" option with a free-text field. */
44
+ allowOther: z.boolean().optional(),
45
+ /** decision only — label above the optional comment box. */
46
+ commentLabel: z.string().max(120).optional(),
47
+ /** decision only — set false to author a decision with no comment/notes
48
+ * box. Without one, the Other pick explains itself in a dedicated
49
+ * "Say which" input; with one (the default), the notes box doubles as the
50
+ * Other explanation. */
51
+ allowComment: z.boolean().optional(),
52
+ // NEEDS YOU fields (PARAMS-SPEC §1, jat-j49id) — all optional, none
53
+ // answerable: links and the primary button navigate, they never post a
54
+ // verdict. Same limits as the contract normalizer (contractBlocks.ts).
55
+ /** A compact row of facts under the question (≤8). */
56
+ meta: decisionMetaSchema.optional(),
57
+ /** Collapsed markdown sections; when present the body is not rendered
58
+ * (it is their flattened fallback for older renderers). */
59
+ sections: decisionSectionsSchema.optional(),
60
+ /** The card's primary link button, above the options. */
61
+ primaryAction: decisionPrimaryActionSchema.optional(),
62
+ /** The group header the renderer draws between cards (BlockRenderer). */
63
+ group: blockGroupSchema.optional(),
64
+ })
65
+ .superRefine((v, ctx) => {
66
+ const sectionChars = (v.sections ?? []).reduce((n, sec) => n + sec.markdown.length, 0);
67
+ if (sectionChars > DECISION_BODY_BUDGET)
68
+ ctx.addIssue({
69
+ code: "custom",
70
+ path: ["sections"],
71
+ message: `sections share a ${DECISION_BODY_BUDGET}-character budget`,
72
+ });
73
+ if (v.variant !== "decision")
74
+ return;
75
+ if (!v.question)
76
+ ctx.addIssue({
77
+ code: "custom",
78
+ path: ["question"],
79
+ message: "decision callouts require a question",
80
+ });
81
+ if (!v.options)
82
+ ctx.addIssue({
83
+ code: "custom",
84
+ path: ["options"],
85
+ message: "decision callouts require 2-6 options",
86
+ });
87
+ if (v.options && v.options.length > 6 && v.options.some((o) => !o.letter))
88
+ ctx.addIssue({
89
+ code: "custom",
90
+ path: ["options"],
91
+ message: "at most 6 options",
92
+ });
93
+ const letters = optionLetters(v.options ?? []);
94
+ if (new Set(letters).size !== letters.length)
95
+ ctx.addIssue({
96
+ code: "custom",
97
+ path: ["options"],
98
+ message: "option letters must be unique",
99
+ });
100
+ if (v.recommended && !letters.includes(v.recommended))
101
+ ctx.addIssue({
102
+ code: "custom",
103
+ path: ["recommended"],
104
+ message: "recommended must be one of the option letters",
105
+ });
106
+ });
107
+ /** Each option's contract letter: its own, else its position (A, B, C…). */
108
+ function optionLetters(options) {
109
+ return options.map((o, i) => o.letter ?? String.fromCharCode(65 + i));
110
+ }
111
+ /**
112
+ * Reserved pick id for the "Other" free-text choice. Option ids can never
113
+ * collide with it: the id regex forbids a leading underscore.
114
+ */
115
+ export const OTHER_ID = "__other__";