makersclaw 0.2.0 → 0.3.1

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 (475) hide show
  1. package/THIRD-PARTY-NOTICES.md +180 -0
  2. package/package.json +3 -2
  3. package/r/annotate.json +62 -0
  4. package/r/approval-request.json +52 -0
  5. package/r/audio-player.json +74 -0
  6. package/r/auth-form.json +55 -0
  7. package/r/board.json +10 -6
  8. package/r/calendar-view.json +105 -0
  9. package/r/cart.json +62 -0
  10. package/r/chart.json +83 -0
  11. package/r/chat.json +95 -0
  12. package/r/code-editor.json +94 -0
  13. package/r/comment-box.json +64 -0
  14. package/r/contact-section.json +53 -0
  15. package/r/core.json +205 -8
  16. package/r/csv-import.json +63 -0
  17. package/r/data-table.json +69 -0
  18. package/r/diagram.json +74 -0
  19. package/r/doc-editor.json +82 -0
  20. package/r/doc-page.json +61 -0
  21. package/r/email-render.json +73 -0
  22. package/r/faq.json +50 -0
  23. package/r/file-upload.json +54 -0
  24. package/r/flow-canvas.json +93 -0
  25. package/r/footer.json +52 -0
  26. package/r/gantt.json +70 -0
  27. package/r/job-panel.json +12 -7
  28. package/r/json-editor.json +66 -0
  29. package/r/map.json +89 -0
  30. package/r/menubar.json +52 -0
  31. package/r/mind-map.json +67 -0
  32. package/r/navigation-menu.json +52 -0
  33. package/r/order-detail.json +54 -0
  34. package/r/org-chart.json +66 -0
  35. package/r/page-builder.json +105 -0
  36. package/r/payment-methods.json +51 -0
  37. package/r/pdf-document.json +79 -0
  38. package/r/pdf-viewer.json +88 -0
  39. package/r/product-detail.json +76 -0
  40. package/r/product-grid.json +65 -0
  41. package/r/record-form.json +67 -0
  42. package/r/record-notes.json +55 -0
  43. package/r/registry.json +3411 -29
  44. package/r/search-dialog.json +51 -0
  45. package/r/settings-list.json +66 -0
  46. package/r/setup-checklist.json +51 -0
  47. package/r/share-dialog.json +52 -0
  48. package/r/sidebar.json +69 -0
  49. package/r/signature-pad.json +72 -0
  50. package/r/sketch-canvas.json +99 -0
  51. package/r/spreadsheet.json +90 -0
  52. package/r/stat-cards.json +66 -0
  53. package/r/task-list.json +63 -0
  54. package/r/task-model.json +98 -0
  55. package/r/testimonials.json +52 -0
  56. package/r/transaction-list.json +53 -0
  57. package/r/whiteboard.json +66 -0
  58. package/registry/blocks/annotate/README.md +179 -0
  59. package/registry/blocks/annotate/annotate-data.js +250 -0
  60. package/registry/blocks/annotate/annotate.jsx +646 -0
  61. package/registry/blocks/annotate/block.json +10 -0
  62. package/registry/blocks/annotate/demo.jsx +135 -0
  63. package/registry/blocks/annotate/index.js +15 -0
  64. package/registry/blocks/approval-request/README.md +116 -0
  65. package/registry/blocks/approval-request/approval-request.jsx +386 -0
  66. package/registry/blocks/approval-request/block.json +10 -0
  67. package/registry/blocks/approval-request/demo.jsx +127 -0
  68. package/registry/blocks/approval-request/index.js +4 -0
  69. package/registry/blocks/audio-player/README.md +167 -0
  70. package/registry/blocks/audio-player/audio-player.jsx +623 -0
  71. package/registry/blocks/audio-player/block.json +14 -0
  72. package/registry/blocks/audio-player/colors.js +109 -0
  73. package/registry/blocks/audio-player/demo.jsx +209 -0
  74. package/registry/blocks/audio-player/index.js +6 -0
  75. package/registry/blocks/audio-player/time.js +67 -0
  76. package/registry/blocks/audio-player/wavesurfer.js +9 -0
  77. package/registry/blocks/auth-form/README.md +126 -0
  78. package/registry/blocks/auth-form/auth-form.jsx +568 -0
  79. package/registry/blocks/auth-form/block.json +10 -0
  80. package/registry/blocks/auth-form/demo.jsx +131 -0
  81. package/registry/blocks/auth-form/index.js +3 -0
  82. package/registry/blocks/board/README.md +55 -5
  83. package/registry/blocks/board/block.json +2 -2
  84. package/registry/blocks/board/board.jsx +230 -86
  85. package/registry/blocks/board/demo.jsx +103 -24
  86. package/registry/blocks/calendar-view/README.md +180 -0
  87. package/registry/blocks/calendar-view/agenda.jsx +147 -0
  88. package/registry/blocks/calendar-view/block.json +76 -0
  89. package/registry/blocks/calendar-view/calendar-model.js +442 -0
  90. package/registry/blocks/calendar-view/calendar.jsx +627 -0
  91. package/registry/blocks/calendar-view/demo.jsx +195 -0
  92. package/registry/blocks/calendar-view/draft.jsx +49 -0
  93. package/registry/blocks/calendar-view/index.js +39 -0
  94. package/registry/blocks/calendar-view/month.jsx +346 -0
  95. package/registry/blocks/calendar-view/paint.js +69 -0
  96. package/registry/blocks/calendar-view/time-grid.jsx +527 -0
  97. package/registry/blocks/calendar-view/tray.jsx +87 -0
  98. package/registry/blocks/cart/README.md +146 -0
  99. package/registry/blocks/cart/block.json +10 -0
  100. package/registry/blocks/cart/cart.jsx +597 -0
  101. package/registry/blocks/cart/demo.jsx +98 -0
  102. package/registry/blocks/cart/index.js +4 -0
  103. package/registry/blocks/cart/money.js +28 -0
  104. package/registry/blocks/chart/README.md +316 -0
  105. package/registry/blocks/chart/block.json +10 -0
  106. package/registry/blocks/chart/cartesian.jsx +642 -0
  107. package/registry/blocks/chart/core.jsx +262 -0
  108. package/registry/blocks/chart/demo.jsx +357 -0
  109. package/registry/blocks/chart/heatmap.jsx +336 -0
  110. package/registry/blocks/chart/index.js +8 -0
  111. package/registry/blocks/chart/pie.jsx +245 -0
  112. package/registry/blocks/chart/sparkline.jsx +88 -0
  113. package/registry/blocks/chat/README.md +273 -0
  114. package/registry/blocks/chat/attachment.jsx +95 -0
  115. package/registry/blocks/chat/block.json +10 -0
  116. package/registry/blocks/chat/chat.jsx +132 -0
  117. package/registry/blocks/chat/composer.jsx +364 -0
  118. package/registry/blocks/chat/demo.jsx +578 -0
  119. package/registry/blocks/chat/header.jsx +34 -0
  120. package/registry/blocks/chat/index.js +9 -0
  121. package/registry/blocks/chat/message.jsx +450 -0
  122. package/registry/blocks/chat/scroller.jsx +247 -0
  123. package/registry/blocks/chat/text.jsx +104 -0
  124. package/registry/blocks/code-editor/README.md +210 -0
  125. package/registry/blocks/code-editor/block.json +22 -0
  126. package/registry/blocks/code-editor/code-editor.jsx +534 -0
  127. package/registry/blocks/code-editor/codemirror.js +38 -0
  128. package/registry/blocks/code-editor/demo.jsx +205 -0
  129. package/registry/blocks/code-editor/index.js +8 -0
  130. package/registry/blocks/code-editor/json.js +317 -0
  131. package/registry/blocks/code-editor/sql.js +136 -0
  132. package/registry/blocks/code-editor/text.js +101 -0
  133. package/registry/blocks/code-editor/theme.js +186 -0
  134. package/registry/blocks/comment-box/README.md +123 -0
  135. package/registry/blocks/comment-box/block.json +10 -0
  136. package/registry/blocks/comment-box/comment-body.jsx +217 -0
  137. package/registry/blocks/comment-box/comment-box.jsx +198 -0
  138. package/registry/blocks/comment-box/comment-time.jsx +77 -0
  139. package/registry/blocks/comment-box/demo.jsx +141 -0
  140. package/registry/blocks/comment-box/index.js +8 -0
  141. package/registry/blocks/contact-section/README.md +152 -0
  142. package/registry/blocks/contact-section/block.json +11 -0
  143. package/registry/blocks/contact-section/contact-section.jsx +509 -0
  144. package/registry/blocks/contact-section/demo.jsx +93 -0
  145. package/registry/blocks/contact-section/index.js +4 -0
  146. package/registry/blocks/csv-import/README.md +133 -0
  147. package/registry/blocks/csv-import/block.json +13 -0
  148. package/registry/blocks/csv-import/csv-import.jsx +479 -0
  149. package/registry/blocks/csv-import/demo.jsx +106 -0
  150. package/registry/blocks/csv-import/import.js +200 -0
  151. package/registry/blocks/csv-import/index.js +7 -0
  152. package/registry/blocks/data-table/README.md +386 -0
  153. package/registry/blocks/data-table/block.json +10 -0
  154. package/registry/blocks/data-table/data-table.jsx +1164 -0
  155. package/registry/blocks/data-table/demo.jsx +588 -0
  156. package/registry/blocks/data-table/index.js +5 -0
  157. package/registry/blocks/data-table/model.js +169 -0
  158. package/registry/blocks/diagram/README.md +108 -0
  159. package/registry/blocks/diagram/block.json +13 -0
  160. package/registry/blocks/diagram/demo.jsx +113 -0
  161. package/registry/blocks/diagram/diagram.jsx +481 -0
  162. package/registry/blocks/diagram/index.js +7 -0
  163. package/registry/blocks/diagram/mermaid.js +52 -0
  164. package/registry/blocks/diagram/palette.js +313 -0
  165. package/registry/blocks/diagram/source.js +98 -0
  166. package/registry/blocks/doc-editor/README.md +215 -0
  167. package/registry/blocks/doc-editor/block.json +15 -0
  168. package/registry/blocks/doc-editor/demo.jsx +225 -0
  169. package/registry/blocks/doc-editor/doc-editor.jsx +291 -0
  170. package/registry/blocks/doc-editor/doc.js +309 -0
  171. package/registry/blocks/doc-editor/index.js +7 -0
  172. package/registry/blocks/doc-editor/schema.jsx +56 -0
  173. package/registry/blocks/doc-editor/shadcn-classes.js +110 -0
  174. package/registry/blocks/doc-editor/theme.js +82 -0
  175. package/registry/blocks/doc-page/README.md +119 -0
  176. package/registry/blocks/doc-page/autosave.js +104 -0
  177. package/registry/blocks/doc-page/block.json +10 -0
  178. package/registry/blocks/doc-page/demo.jsx +137 -0
  179. package/registry/blocks/doc-page/doc-page.jsx +276 -0
  180. package/registry/blocks/doc-page/index.js +4 -0
  181. package/registry/blocks/email-render/README.md +151 -0
  182. package/registry/blocks/email-render/block.json +14 -0
  183. package/registry/blocks/email-render/demo.jsx +153 -0
  184. package/registry/blocks/email-render/doc-email.jsx +210 -0
  185. package/registry/blocks/email-render/email.jsx +221 -0
  186. package/registry/blocks/email-render/index.js +10 -0
  187. package/registry/blocks/email-render/render.js +50 -0
  188. package/registry/blocks/email-render/theme.js +215 -0
  189. package/registry/blocks/faq/README.md +101 -0
  190. package/registry/blocks/faq/block.json +11 -0
  191. package/registry/blocks/faq/demo.jsx +89 -0
  192. package/registry/blocks/faq/faq.jsx +220 -0
  193. package/registry/blocks/faq/index.js +4 -0
  194. package/registry/blocks/file-upload/README.md +138 -0
  195. package/registry/blocks/file-upload/block.json +10 -0
  196. package/registry/blocks/file-upload/demo.jsx +204 -0
  197. package/registry/blocks/file-upload/file-upload.jsx +635 -0
  198. package/registry/blocks/file-upload/index.js +4 -0
  199. package/registry/blocks/flow-canvas/README.md +420 -0
  200. package/registry/blocks/flow-canvas/block.json +13 -0
  201. package/registry/blocks/flow-canvas/board.js +819 -0
  202. package/registry/blocks/flow-canvas/chrome.jsx +649 -0
  203. package/registry/blocks/flow-canvas/context.jsx +35 -0
  204. package/registry/blocks/flow-canvas/demo.jsx +249 -0
  205. package/registry/blocks/flow-canvas/edges.jsx +107 -0
  206. package/registry/blocks/flow-canvas/flow-canvas.jsx +1329 -0
  207. package/registry/blocks/flow-canvas/index.js +41 -0
  208. package/registry/blocks/flow-canvas/nodes.jsx +392 -0
  209. package/registry/blocks/flow-canvas/theme.js +174 -0
  210. package/registry/blocks/footer/README.md +133 -0
  211. package/registry/blocks/footer/block.json +11 -0
  212. package/registry/blocks/footer/demo.jsx +119 -0
  213. package/registry/blocks/footer/footer.jsx +406 -0
  214. package/registry/blocks/footer/index.js +4 -0
  215. package/registry/blocks/gantt/README.md +220 -0
  216. package/registry/blocks/gantt/block.json +10 -0
  217. package/registry/blocks/gantt/demo.jsx +148 -0
  218. package/registry/blocks/gantt/gantt.jsx +923 -0
  219. package/registry/blocks/gantt/index.js +7 -0
  220. package/registry/blocks/gantt/rows.jsx +468 -0
  221. package/registry/blocks/gantt/schedule.js +278 -0
  222. package/registry/blocks/job-panel/README.md +80 -0
  223. package/registry/blocks/job-panel/block.json +3 -3
  224. package/registry/blocks/job-panel/demo.jsx +230 -3
  225. package/registry/blocks/job-panel/job-panel.jsx +169 -3
  226. package/registry/blocks/json-editor/README.md +133 -0
  227. package/registry/blocks/json-editor/block.json +10 -0
  228. package/registry/blocks/json-editor/demo.jsx +92 -0
  229. package/registry/blocks/json-editor/index.js +7 -0
  230. package/registry/blocks/json-editor/json-editor.jsx +305 -0
  231. package/registry/blocks/json-editor/json-tree.jsx +393 -0
  232. package/registry/blocks/json-editor/tree.js +225 -0
  233. package/registry/blocks/map/README.md +221 -0
  234. package/registry/blocks/map/block.json +14 -0
  235. package/registry/blocks/map/demo.jsx +201 -0
  236. package/registry/blocks/map/geo.js +198 -0
  237. package/registry/blocks/map/index.js +8 -0
  238. package/registry/blocks/map/list.jsx +128 -0
  239. package/registry/blocks/map/map-view.jsx +715 -0
  240. package/registry/blocks/map/maplibre.js +30 -0
  241. package/registry/blocks/map/marks.jsx +146 -0
  242. package/registry/blocks/map/theme.js +142 -0
  243. package/registry/blocks/menubar/README.md +109 -0
  244. package/registry/blocks/menubar/block.json +10 -0
  245. package/registry/blocks/menubar/demo.jsx +128 -0
  246. package/registry/blocks/menubar/index.js +4 -0
  247. package/registry/blocks/menubar/menubar.jsx +199 -0
  248. package/registry/blocks/mind-map/README.md +206 -0
  249. package/registry/blocks/mind-map/block.json +10 -0
  250. package/registry/blocks/mind-map/demo.jsx +103 -0
  251. package/registry/blocks/mind-map/index.js +31 -0
  252. package/registry/blocks/mind-map/mind-map.jsx +1125 -0
  253. package/registry/blocks/mind-map/topic.jsx +143 -0
  254. package/registry/blocks/mind-map/tree.js +645 -0
  255. package/registry/blocks/navigation-menu/README.md +124 -0
  256. package/registry/blocks/navigation-menu/block.json +10 -0
  257. package/registry/blocks/navigation-menu/demo.jsx +84 -0
  258. package/registry/blocks/navigation-menu/index.js +4 -0
  259. package/registry/blocks/navigation-menu/navigation-menu.jsx +448 -0
  260. package/registry/blocks/order-detail/README.md +109 -0
  261. package/registry/blocks/order-detail/block.json +10 -0
  262. package/registry/blocks/order-detail/demo.jsx +88 -0
  263. package/registry/blocks/order-detail/index.js +4 -0
  264. package/registry/blocks/order-detail/order-detail.jsx +354 -0
  265. package/registry/blocks/org-chart/README.md +145 -0
  266. package/registry/blocks/org-chart/block.json +10 -0
  267. package/registry/blocks/org-chart/demo.jsx +94 -0
  268. package/registry/blocks/org-chart/index.js +7 -0
  269. package/registry/blocks/org-chart/org-chart.jsx +631 -0
  270. package/registry/blocks/org-chart/org.js +245 -0
  271. package/registry/blocks/org-chart/person.jsx +96 -0
  272. package/registry/blocks/page-builder/README.md +257 -0
  273. package/registry/blocks/page-builder/block.json +14 -0
  274. package/registry/blocks/page-builder/demo.jsx +145 -0
  275. package/registry/blocks/page-builder/grapes.js +18 -0
  276. package/registry/blocks/page-builder/index.js +11 -0
  277. package/registry/blocks/page-builder/page-builder.jsx +704 -0
  278. package/registry/blocks/page-builder/page-view.jsx +33 -0
  279. package/registry/blocks/page-builder/page.js +118 -0
  280. package/registry/blocks/page-builder/panels.jsx +588 -0
  281. package/registry/blocks/page-builder/sections.js +209 -0
  282. package/registry/blocks/page-builder/theme.js +87 -0
  283. package/registry/blocks/page-builder/thumbs.jsx +189 -0
  284. package/registry/blocks/page-builder/tokens.js +329 -0
  285. package/registry/blocks/payment-methods/README.md +104 -0
  286. package/registry/blocks/payment-methods/block.json +10 -0
  287. package/registry/blocks/payment-methods/demo.jsx +71 -0
  288. package/registry/blocks/payment-methods/index.js +4 -0
  289. package/registry/blocks/payment-methods/payment-methods.jsx +302 -0
  290. package/registry/blocks/pdf-document/README.md +213 -0
  291. package/registry/blocks/pdf-document/block.json +13 -0
  292. package/registry/blocks/pdf-document/demo.jsx +136 -0
  293. package/registry/blocks/pdf-document/index.js +33 -0
  294. package/registry/blocks/pdf-document/money.js +83 -0
  295. package/registry/blocks/pdf-document/pdf-document.jsx +144 -0
  296. package/registry/blocks/pdf-document/primitives.jsx +271 -0
  297. package/registry/blocks/pdf-document/quote.jsx +179 -0
  298. package/registry/blocks/pdf-document/theme.js +193 -0
  299. package/registry/blocks/pdf-viewer/README.md +191 -0
  300. package/registry/blocks/pdf-viewer/block.json +14 -0
  301. package/registry/blocks/pdf-viewer/demo.jsx +252 -0
  302. package/registry/blocks/pdf-viewer/helpers.js +270 -0
  303. package/registry/blocks/pdf-viewer/index.js +8 -0
  304. package/registry/blocks/pdf-viewer/notes.jsx +195 -0
  305. package/registry/blocks/pdf-viewer/pdf-viewer.jsx +1368 -0
  306. package/registry/blocks/pdf-viewer/pdfjs.js +37 -0
  307. package/registry/blocks/pdf-viewer/ssr-shim-end.js +6 -0
  308. package/registry/blocks/pdf-viewer/ssr-shim.js +44 -0
  309. package/registry/blocks/product-detail/README.md +217 -0
  310. package/registry/blocks/product-detail/block.json +10 -0
  311. package/registry/blocks/product-detail/demo.jsx +233 -0
  312. package/registry/blocks/product-detail/index.js +7 -0
  313. package/registry/blocks/product-detail/price.jsx +115 -0
  314. package/registry/blocks/product-detail/product-detail.jsx +348 -0
  315. package/registry/blocks/product-detail/product-media.jsx +102 -0
  316. package/registry/blocks/product-detail/product-options.jsx +144 -0
  317. package/registry/blocks/product-grid/README.md +162 -0
  318. package/registry/blocks/product-grid/block.json +10 -0
  319. package/registry/blocks/product-grid/demo.jsx +255 -0
  320. package/registry/blocks/product-grid/index.js +5 -0
  321. package/registry/blocks/product-grid/product-card.jsx +232 -0
  322. package/registry/blocks/product-grid/product-grid.jsx +235 -0
  323. package/registry/blocks/record-form/README.md +196 -0
  324. package/registry/blocks/record-form/block.json +10 -0
  325. package/registry/blocks/record-form/demo.jsx +525 -0
  326. package/registry/blocks/record-form/index.js +4 -0
  327. package/registry/blocks/record-form/record-fields.jsx +457 -0
  328. package/registry/blocks/record-form/record-form.jsx +415 -0
  329. package/registry/blocks/record-form/rules.js +81 -0
  330. package/registry/blocks/record-notes/README.md +139 -0
  331. package/registry/blocks/record-notes/block.json +10 -0
  332. package/registry/blocks/record-notes/demo.jsx +179 -0
  333. package/registry/blocks/record-notes/index.js +4 -0
  334. package/registry/blocks/record-notes/record-notes.jsx +266 -0
  335. package/registry/blocks/search-dialog/README.md +108 -0
  336. package/registry/blocks/search-dialog/block.json +10 -0
  337. package/registry/blocks/search-dialog/demo.jsx +116 -0
  338. package/registry/blocks/search-dialog/index.js +3 -0
  339. package/registry/blocks/search-dialog/search-dialog.jsx +235 -0
  340. package/registry/blocks/settings-list/README.md +171 -0
  341. package/registry/blocks/settings-list/block.json +10 -0
  342. package/registry/blocks/settings-list/demo.jsx +333 -0
  343. package/registry/blocks/settings-list/index.js +4 -0
  344. package/registry/blocks/settings-list/row-state.jsx +93 -0
  345. package/registry/blocks/settings-list/settings-list.jsx +349 -0
  346. package/registry/blocks/settings-list/settings-matrix.jsx +118 -0
  347. package/registry/blocks/setup-checklist/README.md +142 -0
  348. package/registry/blocks/setup-checklist/block.json +10 -0
  349. package/registry/blocks/setup-checklist/demo.jsx +159 -0
  350. package/registry/blocks/setup-checklist/index.js +4 -0
  351. package/registry/blocks/setup-checklist/setup-checklist.jsx +446 -0
  352. package/registry/blocks/share-dialog/README.md +113 -0
  353. package/registry/blocks/share-dialog/block.json +10 -0
  354. package/registry/blocks/share-dialog/demo.jsx +140 -0
  355. package/registry/blocks/share-dialog/index.js +3 -0
  356. package/registry/blocks/share-dialog/share-dialog.jsx +384 -0
  357. package/registry/blocks/sidebar/README.md +190 -0
  358. package/registry/blocks/sidebar/block.json +43 -0
  359. package/registry/blocks/sidebar/demo.jsx +577 -0
  360. package/registry/blocks/sidebar/index.js +4 -0
  361. package/registry/blocks/sidebar/sidebar-panel.jsx +149 -0
  362. package/registry/blocks/sidebar/sidebar.jsx +864 -0
  363. package/registry/blocks/signature-pad/README.md +137 -0
  364. package/registry/blocks/signature-pad/block.json +13 -0
  365. package/registry/blocks/signature-pad/colors.js +115 -0
  366. package/registry/blocks/signature-pad/demo.jsx +94 -0
  367. package/registry/blocks/signature-pad/index.js +6 -0
  368. package/registry/blocks/signature-pad/pad.js +7 -0
  369. package/registry/blocks/signature-pad/signature-pad.jsx +434 -0
  370. package/registry/blocks/signature-pad/signature.js +68 -0
  371. package/registry/blocks/sketch-canvas/README.md +280 -0
  372. package/registry/blocks/sketch-canvas/block.json +13 -0
  373. package/registry/blocks/sketch-canvas/demo.jsx +159 -0
  374. package/registry/blocks/sketch-canvas/excalidraw.js +40 -0
  375. package/registry/blocks/sketch-canvas/index.js +9 -0
  376. package/registry/blocks/sketch-canvas/palette.js +226 -0
  377. package/registry/blocks/sketch-canvas/sketch-canvas.jsx +1188 -0
  378. package/registry/blocks/sketch-canvas/sketch.js +179 -0
  379. package/registry/blocks/sketch-canvas/ssr-shim-end.js +6 -0
  380. package/registry/blocks/sketch-canvas/ssr-shim.js +45 -0
  381. package/registry/blocks/sketch-canvas/stamps.js +104 -0
  382. package/registry/blocks/sketch-canvas/theme.js +131 -0
  383. package/registry/blocks/spreadsheet/README.md +307 -0
  384. package/registry/blocks/spreadsheet/block.json +13 -0
  385. package/registry/blocks/spreadsheet/cells.jsx +455 -0
  386. package/registry/blocks/spreadsheet/chrome.jsx +325 -0
  387. package/registry/blocks/spreadsheet/demo.jsx +177 -0
  388. package/registry/blocks/spreadsheet/grid.js +387 -0
  389. package/registry/blocks/spreadsheet/index.js +34 -0
  390. package/registry/blocks/spreadsheet/spreadsheet.jsx +1732 -0
  391. package/registry/blocks/spreadsheet/types.js +473 -0
  392. package/registry/blocks/stat-cards/README.md +173 -0
  393. package/registry/blocks/stat-cards/block.json +10 -0
  394. package/registry/blocks/stat-cards/demo.jsx +257 -0
  395. package/registry/blocks/stat-cards/index.js +4 -0
  396. package/registry/blocks/stat-cards/stat-cards.jsx +307 -0
  397. package/registry/blocks/stat-cards/usage.jsx +243 -0
  398. package/registry/blocks/task-list/README.md +176 -0
  399. package/registry/blocks/task-list/block.json +10 -0
  400. package/registry/blocks/task-list/demo.jsx +134 -0
  401. package/registry/blocks/task-list/index.js +5 -0
  402. package/registry/blocks/task-list/task-list.jsx +907 -0
  403. package/registry/blocks/task-model/README.md +455 -0
  404. package/registry/blocks/task-model/block.json +167 -0
  405. package/registry/blocks/task-model/changes.js +89 -0
  406. package/registry/blocks/task-model/dates.js +371 -0
  407. package/registry/blocks/task-model/demo.jsx +215 -0
  408. package/registry/blocks/task-model/dnd.jsx +240 -0
  409. package/registry/blocks/task-model/index.js +97 -0
  410. package/registry/blocks/task-model/model.js +919 -0
  411. package/registry/blocks/task-model/parts.jsx +449 -0
  412. package/registry/blocks/task-model/toolbar.jsx +271 -0
  413. package/registry/blocks/testimonials/README.md +139 -0
  414. package/registry/blocks/testimonials/block.json +11 -0
  415. package/registry/blocks/testimonials/demo.jsx +137 -0
  416. package/registry/blocks/testimonials/index.js +4 -0
  417. package/registry/blocks/testimonials/testimonials.jsx +430 -0
  418. package/registry/blocks/transaction-list/README.md +126 -0
  419. package/registry/blocks/transaction-list/block.json +10 -0
  420. package/registry/blocks/transaction-list/demo.jsx +79 -0
  421. package/registry/blocks/transaction-list/index.js +4 -0
  422. package/registry/blocks/transaction-list/transaction-list.jsx +383 -0
  423. package/registry/blocks/whiteboard/README.md +179 -0
  424. package/registry/blocks/whiteboard/block.json +10 -0
  425. package/registry/blocks/whiteboard/demo.jsx +169 -0
  426. package/registry/blocks/whiteboard/index.js +6 -0
  427. package/registry/blocks/whiteboard/templates.js +150 -0
  428. package/registry/blocks/whiteboard/whiteboard.jsx +721 -0
  429. package/src/cli.mjs +19 -6
  430. package/src/install.mjs +18 -0
  431. package/src/registry.mjs +38 -4
  432. package/src/shadcn.mjs +14 -1
  433. package/templates/next/files/README.md +145 -11
  434. package/templates/next/files/app/globals.css +55 -4
  435. package/templates/next/files/check/run.mjs +3 -3
  436. package/templates/next/files/components/ui/avatar.jsx +141 -0
  437. package/templates/next/files/components/ui/breadcrumb.jsx +149 -0
  438. package/templates/next/files/components/ui/button-group.jsx +70 -0
  439. package/templates/next/files/components/ui/button.jsx +132 -12
  440. package/templates/next/files/components/ui/calendar.jsx +609 -0
  441. package/templates/next/files/components/ui/carousel.jsx +281 -0
  442. package/templates/next/files/components/ui/collapsible.jsx +208 -0
  443. package/templates/next/files/components/ui/combobox.jsx +608 -0
  444. package/templates/next/files/components/ui/command.jsx +577 -0
  445. package/templates/next/files/components/ui/context-menu.jsx +191 -0
  446. package/templates/next/files/components/ui/date-picker.jsx +360 -0
  447. package/templates/next/files/components/ui/distribution.jsx +117 -0
  448. package/templates/next/files/components/ui/feedback.jsx +143 -0
  449. package/templates/next/files/components/ui/field.jsx +115 -3
  450. package/templates/next/files/components/ui/file-input.jsx +234 -0
  451. package/templates/next/files/components/ui/icon.jsx +130 -8
  452. package/templates/next/files/components/ui/image.jsx +143 -0
  453. package/templates/next/files/components/ui/index.js +47 -2
  454. package/templates/next/files/components/ui/input-group.jsx +213 -0
  455. package/templates/next/files/components/ui/input-otp.jsx +170 -0
  456. package/templates/next/files/components/ui/item.jsx +206 -0
  457. package/templates/next/files/components/ui/menu.jsx +454 -82
  458. package/templates/next/files/components/ui/notice.jsx +126 -14
  459. package/templates/next/files/components/ui/pagination.jsx +156 -0
  460. package/templates/next/files/components/ui/popover.jsx +284 -0
  461. package/templates/next/files/components/ui/radio.jsx +193 -0
  462. package/templates/next/files/components/ui/rating.jsx +131 -0
  463. package/templates/next/files/components/ui/resizable.jsx +338 -0
  464. package/templates/next/files/components/ui/scroll-area.jsx +123 -0
  465. package/templates/next/files/components/ui/separator.jsx +119 -0
  466. package/templates/next/files/components/ui/sheet.jsx +96 -11
  467. package/templates/next/files/components/ui/slider.jsx +174 -0
  468. package/templates/next/files/components/ui/stat.jsx +574 -0
  469. package/templates/next/files/components/ui/steps.jsx +338 -0
  470. package/templates/next/files/components/ui/swatch.jsx +33 -0
  471. package/templates/next/files/components/ui/table.jsx +130 -0
  472. package/templates/next/files/components/ui/toast.jsx +440 -0
  473. package/templates/next/files/components/ui/toggle.jsx +195 -0
  474. package/templates/next/files/components/ui/tooltip.jsx +270 -0
  475. package/templates/next/template.json +264 -8
@@ -0,0 +1,457 @@
1
+ "use client";
2
+
3
+ import { useEffect, useRef } from "react";
4
+ import {
5
+ Avatar,
6
+ Badge,
7
+ Checkbox,
8
+ Combobox,
9
+ DatePicker,
10
+ Field,
11
+ FileInput,
12
+ IconButton,
13
+ Image,
14
+ Input,
15
+ InputGroup,
16
+ PasswordInput,
17
+ RadioGroup,
18
+ Rating,
19
+ Select,
20
+ Switch,
21
+ Textarea,
22
+ TimeInput,
23
+ Button,
24
+ } from "../../ui";
25
+
26
+ // One field of a RecordForm, drawn from its description: the kit part its
27
+ // `type` names, inside a Field (label, help, error). Every control is
28
+ // controlled — the form holds the draft — and reports a plain value, never
29
+ // an event. RecordForm is the only caller.
30
+
31
+ // The types that take the whole row in a two-column grid unless the field
32
+ // says `width: "half"`.
33
+ export const WIDE = new Set(["textarea", "choice-cards", "checkboxes", "checkbox", "switch", "photo", "images", "radio"]);
34
+
35
+ // Types that carry their own label (a box or a switch names itself).
36
+ const SELF_LABELLED = new Set(["checkbox", "switch"]);
37
+
38
+ /** An option list from strings or { value, label }. */
39
+ function opts(options) {
40
+ return (options ?? []).map((o) => (typeof o === "object" && o !== null ? o : { value: String(o), label: String(o) }));
41
+ }
42
+
43
+ /** A picture value — a URL string or { src, file } — to its src. */
44
+ export function srcOf(v) {
45
+ return typeof v === "string" ? v : v?.src ?? null;
46
+ }
47
+
48
+ export function RecordField({ field, id, value, values, error, disabled, onChange, onBlur }) {
49
+ const type = field.type ?? "text";
50
+ const help = field.help ?? field.hint;
51
+ const describedBy = error ? `${id}-error` : help ? `${id}-hint` : undefined;
52
+ const off = disabled || field.disabled;
53
+ const invalid = Boolean(error);
54
+ const common = { id, disabled: off, invalid, "aria-describedby": describedBy, onBlur };
55
+
56
+ let control;
57
+ switch (type) {
58
+ case "textarea":
59
+ control = (
60
+ <Textarea
61
+ {...common}
62
+ name={field.name}
63
+ value={value ?? ""}
64
+ rows={field.rows ?? 4}
65
+ placeholder={field.placeholder}
66
+ maxLength={field.maxLength}
67
+ required={field.required}
68
+ readOnly={field.readOnly}
69
+ onChange={(e) => onChange(e.target.value)}
70
+ />
71
+ );
72
+ break;
73
+ case "password":
74
+ control = (
75
+ <PasswordInput
76
+ {...common}
77
+ name={field.name}
78
+ value={value ?? ""}
79
+ placeholder={field.placeholder}
80
+ autoComplete={field.autoComplete ?? "new-password"}
81
+ required={field.required}
82
+ onChange={(e) => onChange(e.target.value)}
83
+ />
84
+ );
85
+ break;
86
+ case "select":
87
+ control = (
88
+ <Select
89
+ {...common}
90
+ name={field.name}
91
+ value={value ?? ""}
92
+ required={field.required}
93
+ onChange={(e) => onChange(e.target.value)}
94
+ >
95
+ <option value="" disabled={field.required}>
96
+ {field.placeholder ?? "Choose…"}
97
+ </option>
98
+ {opts(field.options).map((o) => (
99
+ <option key={o.value} value={o.value} disabled={o.disabled}>
100
+ {o.label}
101
+ </option>
102
+ ))}
103
+ </Select>
104
+ );
105
+ break;
106
+ case "combobox":
107
+ case "tags": {
108
+ const tags = type === "tags";
109
+ const multiple = tags || Boolean(field.multiple);
110
+ control = (
111
+ <Combobox
112
+ id={id}
113
+ name={field.name}
114
+ options={opts(field.options)}
115
+ value={multiple ? value ?? [] : value ?? null}
116
+ onValueChange={(v) => onChange(v)}
117
+ multiple={multiple}
118
+ creatable={tags || field.creatable}
119
+ searchable={field.searchable ?? true}
120
+ clearable={!multiple && !field.required}
121
+ placeholder={field.placeholder}
122
+ disabled={off}
123
+ invalid={invalid}
124
+ aria-describedby={describedBy}
125
+ onOpenChange={(open) => {
126
+ if (!open) onBlur?.();
127
+ }}
128
+ />
129
+ );
130
+ break;
131
+ }
132
+ case "radio":
133
+ case "choice-cards":
134
+ control = (
135
+ <RadioGroup
136
+ id={id}
137
+ name={id}
138
+ value={value ?? ""}
139
+ onChange={(v) => {
140
+ onChange(v);
141
+ onBlur?.();
142
+ }}
143
+ options={opts(field.options).map((o) => ({ ...o, label: o.badge || o.price ? <ChoiceLabel option={o} /> : o.label }))}
144
+ variant={type === "choice-cards" ? "card" : "list"}
145
+ orientation={field.orientation ?? (type === "choice-cards" ? "horizontal" : "vertical")}
146
+ disabled={off}
147
+ invalid={invalid}
148
+ required={field.required}
149
+ />
150
+ );
151
+ break;
152
+ case "checkbox":
153
+ control = (
154
+ <Checkbox
155
+ id={id}
156
+ name={field.name}
157
+ checked={value === true}
158
+ onChange={(e) => {
159
+ onChange(e.target.checked);
160
+ onBlur?.();
161
+ }}
162
+ disabled={off}
163
+ aria-invalid={invalid || undefined}
164
+ aria-describedby={describedBy}
165
+ label={<Labelled field={field} />}
166
+ />
167
+ );
168
+ break;
169
+ case "switch":
170
+ control = (
171
+ <div className="flex items-start justify-between gap-4">
172
+ <div className="min-w-0 pt-2.5">
173
+ <label htmlFor={id} className="text-sm font-medium text-foreground">
174
+ {field.label}
175
+ </label>
176
+ {field.description ? <p className="text-sm text-muted-foreground">{field.description}</p> : null}
177
+ </div>
178
+ <Switch
179
+ id={id}
180
+ checked={value === true}
181
+ onChange={(e) => {
182
+ onChange(e.target.checked);
183
+ onBlur?.();
184
+ }}
185
+ disabled={off}
186
+ />
187
+ </div>
188
+ );
189
+ break;
190
+ case "checkboxes": {
191
+ const list = Array.isArray(value) ? value : [];
192
+ return (
193
+ <fieldset id={id} className="grid gap-1.5" aria-describedby={describedBy} aria-invalid={invalid || undefined}>
194
+ <legend className="text-sm font-medium text-foreground">
195
+ {field.label}
196
+ {field.required ? <span aria-hidden="true" className="text-destructive"> *</span> : null}
197
+ </legend>
198
+ {field.description ? <p className="text-sm text-muted-foreground">{field.description}</p> : null}
199
+ <div className={field.orientation === "horizontal" ? "flex flex-wrap gap-x-6" : "grid"}>
200
+ {opts(field.options).map((o) => (
201
+ <Checkbox
202
+ key={o.value}
203
+ id={`${id}-${o.value}`}
204
+ checked={list.includes(o.value)}
205
+ disabled={off || o.disabled}
206
+ onChange={(e) => {
207
+ onChange(e.target.checked ? [...list, o.value] : list.filter((x) => x !== o.value));
208
+ onBlur?.();
209
+ }}
210
+ label={o.description ? <Labelled field={o} /> : o.label}
211
+ />
212
+ ))}
213
+ </div>
214
+ <Note id={id} error={error} help={help} />
215
+ </fieldset>
216
+ );
217
+ }
218
+ case "date":
219
+ control = (
220
+ <DatePicker
221
+ id={id}
222
+ name={field.name}
223
+ value={value || null}
224
+ onChange={(v) => {
225
+ onChange(v);
226
+ onBlur?.();
227
+ }}
228
+ placeholder={field.placeholder ?? "Pick a date"}
229
+ min={field.min}
230
+ max={field.max}
231
+ captionLayout={field.captionLayout}
232
+ clearable={!field.required}
233
+ disabled={off}
234
+ invalid={invalid}
235
+ aria-describedby={describedBy}
236
+ />
237
+ );
238
+ break;
239
+ case "time":
240
+ control = (
241
+ <TimeInput
242
+ {...common}
243
+ name={field.name}
244
+ value={value ?? ""}
245
+ min={field.min}
246
+ max={field.max}
247
+ step={field.step}
248
+ required={field.required}
249
+ onChange={(e) => onChange(e.target.value)}
250
+ />
251
+ );
252
+ break;
253
+ case "rating":
254
+ control = (
255
+ <Rating
256
+ id={id}
257
+ name={field.name}
258
+ value={Number(value) || 0}
259
+ max={field.max ?? 5}
260
+ label={field.label}
261
+ disabled={off}
262
+ onChange={(n) => {
263
+ onChange(n);
264
+ onBlur?.();
265
+ }}
266
+ />
267
+ );
268
+ break;
269
+ case "photo":
270
+ control = <PhotoControl field={field} id={id} value={value} values={values} disabled={off} onChange={onChange} describedBy={describedBy} />;
271
+ break;
272
+ case "images":
273
+ control = <ImagesControl field={field} id={id} value={value} disabled={off} onChange={onChange} describedBy={describedBy} />;
274
+ break;
275
+ case "static":
276
+ control = (
277
+ <p id={id} className="flex min-h-11 items-center text-sm text-foreground">
278
+ {field.format ? field.format(value, values) : value ?? "—"}
279
+ </p>
280
+ );
281
+ break;
282
+ default: {
283
+ // text · email · url · tel · number, with an icon, a prefix or a suffix
284
+ const inputType = ["email", "url", "tel", "number"].includes(type) ? type : "text";
285
+ const props = {
286
+ ...common,
287
+ name: field.name,
288
+ type: inputType,
289
+ value: value ?? "",
290
+ placeholder: field.placeholder,
291
+ autoComplete: field.autoComplete,
292
+ inputMode: type === "number" ? "decimal" : field.inputMode,
293
+ min: field.min,
294
+ max: field.max,
295
+ step: field.step,
296
+ maxLength: field.maxLength,
297
+ required: field.required,
298
+ readOnly: field.readOnly,
299
+ onChange: (e) => onChange(e.target.value),
300
+ };
301
+ control =
302
+ field.icon || field.prefix || field.suffix ? (
303
+ <InputGroup {...props} icon={field.icon} prefix={field.prefix} suffix={field.suffix} />
304
+ ) : (
305
+ <Input {...props} />
306
+ );
307
+ }
308
+ }
309
+
310
+ if (SELF_LABELLED.has(type)) {
311
+ return (
312
+ <div className="grid gap-1">
313
+ {control}
314
+ <Note id={id} error={error} help={type === "checkbox" ? null : help} />
315
+ </div>
316
+ );
317
+ }
318
+ return (
319
+ <Field id={id} label={field.label} hint={help} error={error} required={field.required}>
320
+ {control}
321
+ </Field>
322
+ );
323
+ }
324
+
325
+ function Note({ id, error, help }) {
326
+ if (error) {
327
+ return (
328
+ <p id={`${id}-error`} role="alert" className="text-xs text-destructive">
329
+ {error}
330
+ </p>
331
+ );
332
+ }
333
+ return help ? (
334
+ <p id={`${id}-hint`} className="text-xs text-muted-foreground">
335
+ {help}
336
+ </p>
337
+ ) : null;
338
+ }
339
+
340
+ /** A box's label with its description under it. */
341
+ function Labelled({ field }) {
342
+ return (
343
+ <span className="grid gap-0.5">
344
+ <span className="font-medium text-foreground">
345
+ {field.label}
346
+ {field.required ? <span aria-hidden="true" className="text-destructive"> *</span> : null}
347
+ </span>
348
+ {field.description ?? field.help ? <span className="text-muted-foreground">{field.description ?? field.help}</span> : null}
349
+ </span>
350
+ );
351
+ }
352
+
353
+ /** A choice card's title row: the name, a badge, a price at the end. */
354
+ function ChoiceLabel({ option }) {
355
+ return (
356
+ <span className="flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1">
357
+ <span className="inline-flex flex-wrap items-center gap-2">
358
+ {option.label}
359
+ {option.badge ? (
360
+ <Badge tone="primary" variant="soft">
361
+ {option.badge}
362
+ </Badge>
363
+ ) : null}
364
+ </span>
365
+ {option.price ? (
366
+ <span data-nums className="text-sm font-normal text-foreground">
367
+ {option.price}
368
+ {option.per ? <span className="text-muted-foreground">{option.per}</span> : null}
369
+ </span>
370
+ ) : null}
371
+ </span>
372
+ );
373
+ }
374
+
375
+ /** Object URLs made for picked files, revoked when the form goes. */
376
+ function useObjectUrls() {
377
+ const made = useRef([]);
378
+ useEffect(
379
+ () => () => {
380
+ made.current.forEach((u) => URL.revokeObjectURL(u));
381
+ },
382
+ [],
383
+ );
384
+ return (file) => {
385
+ const u = URL.createObjectURL(file);
386
+ made.current.push(u);
387
+ return u;
388
+ };
389
+ }
390
+
391
+ /** A profile picture: the current one, Upload, Remove. */
392
+ function PhotoControl({ field, id, value, values, disabled, onChange, describedBy }) {
393
+ const url = useObjectUrls();
394
+ const src = srcOf(value);
395
+ const who = field.nameFrom ? field.nameFrom(values) : field.label;
396
+ return (
397
+ <div id={id} className="flex flex-wrap items-center gap-4" aria-describedby={describedBy}>
398
+ <Avatar name={who} src={src ?? undefined} size="lg" shape={field.shape ?? "round"} />
399
+ <div className="flex flex-wrap gap-2">
400
+ <FileInput
401
+ accept={field.accept ?? "image/*"}
402
+ disabled={disabled}
403
+ onFiles={([file]) => onChange({ src: url(file), file, name: file.name })}
404
+ size="sm"
405
+ >
406
+ {src ? field.replaceLabel ?? "Upload new photo" : field.uploadLabel ?? "Upload photo"}
407
+ </FileInput>
408
+ {src ? (
409
+ <Button variant="quiet" size="sm" disabled={disabled} onClick={() => onChange(null)}>
410
+ {field.removeLabel ?? "Remove"}
411
+ </Button>
412
+ ) : null}
413
+ </div>
414
+ </div>
415
+ );
416
+ }
417
+
418
+ /** A row of pictures, each removable, and Add while there is room. */
419
+ function ImagesControl({ field, id, value, disabled, onChange, describedBy }) {
420
+ const url = useObjectUrls();
421
+ const list = Array.isArray(value) ? value : [];
422
+ const room = field.maxItems ? field.maxItems - list.length : Infinity;
423
+ return (
424
+ <div id={id} className="grid grid-cols-3 gap-3 sm:grid-cols-4" aria-describedby={describedBy}>
425
+ {list.map((img, i) => {
426
+ const alt = (typeof img === "object" && (img.alt ?? img.name)) || `${field.label} ${i + 1}`;
427
+ return (
428
+ <div key={`${srcOf(img)}-${i}`} className="relative">
429
+ <Image src={srcOf(img)} alt={alt} ratio="square" className="w-full border border-border" />
430
+ <IconButton
431
+ icon="trash"
432
+ label={`Remove ${alt}`}
433
+ size="sm"
434
+ variant="secondary"
435
+ disabled={disabled}
436
+ className="absolute right-1 top-1"
437
+ onClick={() => onChange(list.filter((_, j) => j !== i))}
438
+ />
439
+ </div>
440
+ );
441
+ })}
442
+ {room > 0 ? (
443
+ <FileInput
444
+ accept={field.accept ?? "image/*"}
445
+ multiple
446
+ disabled={disabled}
447
+ variant="secondary"
448
+ icon="plus"
449
+ className="aspect-square h-auto w-full border-dashed"
450
+ onFiles={(files) => onChange([...list, ...files.slice(0, room).map((file) => ({ src: url(file), file, name: file.name }))])}
451
+ >
452
+ {field.addLabel ?? "Add"}
453
+ </FileInput>
454
+ ) : null}
455
+ </div>
456
+ );
457
+ }