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,170 @@
1
+ "use client";
2
+
3
+ import { useRef, useState } from "react";
4
+ import { cx } from "./cx";
5
+ import { Icon } from "./icon";
6
+
7
+ // InputOTP — the one-time code from an email or a text: N boxes, one
8
+ // character each. The boxes are a view of ONE string, as a single field
9
+ // is: typing fills the box and moves on, Backspace clears and moves
10
+ // back, a cleared box closes the gap, the arrows and Home/End move, and
11
+ // a box past the first empty one sends the caret back to it. Paste, or
12
+ // the phone's "From Messages" (autocomplete="one-time-code" on the first
13
+ // box), fills every box at once. Each box is a native <input>, so the
14
+ // keyboard, the numeric keypad and autofill are the browser's.
15
+ //
16
+ // length how many boxes (6)
17
+ // groups box counts split by a dash: [3, 3] → 123–456; their
18
+ // sum is the length
19
+ // value the code so far, a string; onChange(code) on every edit
20
+ // (controlled), or `defaultValue`
21
+ // onComplete (code) → called once the last box fills: verify here
22
+ // digitsOnly true (the default: 0–9 and the number pad) · false
23
+ // (letters too, as typed)
24
+ // label what a screen reader calls the group ("Verification code")
25
+ // name a hidden input carries the whole code in a form
26
+ // invalid every box turns red — pair it with <Field error>
27
+ //
28
+ // Wrap it in <Field id> with the same `id`: the label points at the
29
+ // first box. After a wrong code, clear `value` and the caret starts over.
30
+
31
+ const SLOT =
32
+ "h-11 w-10 min-w-0 -ml-px border border-input bg-background text-center text-lg font-medium text-foreground outline-none " +
33
+ "first:ml-0 first:rounded-l-md last:rounded-r-md caret-foreground selection:bg-transparent " +
34
+ "focus-visible:z-10 focus-visible:ring-2 focus-visible:ring-ring " +
35
+ "aria-[invalid=true]:border-destructive disabled:cursor-not-allowed";
36
+
37
+ export function InputOTP({
38
+ id,
39
+ length = 6,
40
+ groups,
41
+ value,
42
+ defaultValue = "",
43
+ onChange,
44
+ onComplete,
45
+ digitsOnly = true,
46
+ label = "One-time code",
47
+ name,
48
+ invalid,
49
+ disabled,
50
+ autoFocus,
51
+ className,
52
+ }) {
53
+ const sizes = groups?.length ? groups : [length];
54
+ const total = sizes.reduce((a, b) => a + b, 0);
55
+ const [own, setOwn] = useState(defaultValue);
56
+ const code = (value ?? own).slice(0, total);
57
+ const boxes = useRef([]);
58
+ // The code as of the last edit. Focus moves inside the edit's own
59
+ // event, before React renders it, so the redirect below reads this.
60
+ const latest = useRef(code);
61
+ latest.current = code;
62
+ const allowed = digitsOnly ? /[0-9]/ : /[0-9a-zA-Z]/;
63
+ const clean = (s) => [...s].filter((c) => allowed.test(c)).join("");
64
+
65
+ function focus(i) {
66
+ const el = boxes.current[Math.max(0, Math.min(i, total - 1))];
67
+ el?.focus();
68
+ el?.select();
69
+ }
70
+
71
+ function commit(next, caret) {
72
+ next = next.slice(0, total);
73
+ latest.current = next;
74
+ if (value === undefined) setOwn(next);
75
+ if (next !== code) onChange?.(next);
76
+ if (next.length === total && next !== code) onComplete?.(next);
77
+ if (caret !== undefined) focus(caret);
78
+ }
79
+
80
+ // Put `text` in from box i on, over what is there.
81
+ function place(i, text) {
82
+ commit(code.slice(0, i) + text + code.slice(i + text.length), i + text.length);
83
+ }
84
+
85
+ function onInput(e, i) {
86
+ const old = code[i] ?? "";
87
+ let v = e.target.value;
88
+ // The caret sat beside the old character: keep only the new one.
89
+ if (old && v.length === 2) v = v[0] === old ? v[1] : v[0];
90
+ if (v === "") return commit(code.slice(0, i) + code.slice(i + 1), i);
91
+ const typed = clean(v);
92
+ if (typed) place(i, typed);
93
+ }
94
+
95
+ function onKeyDown(e, i) {
96
+ if (e.key === "Backspace" && !code[i] && i > 0) {
97
+ commit(code.slice(0, i - 1) + code.slice(i), i - 1);
98
+ } else if (e.key === "Delete" && code[i]) {
99
+ commit(code.slice(0, i) + code.slice(i + 1), i);
100
+ } else if (e.key === "ArrowLeft") focus(i - 1);
101
+ else if (e.key === "ArrowRight") focus(Math.min(i + 1, code.length));
102
+ else if (e.key === "Home") focus(0);
103
+ else if (e.key === "End") focus(code.length);
104
+ else return;
105
+ e.preventDefault();
106
+ }
107
+
108
+ function onPaste(e, i) {
109
+ e.preventDefault();
110
+ const text = clean(e.clipboardData.getData("text"));
111
+ if (!text) return;
112
+ // A whole code replaces the code; a fragment goes in where the caret is.
113
+ place(text.length >= total ? 0 : i, text);
114
+ }
115
+
116
+ // The code is one string: a box past the first empty one is not a
117
+ // place to type, so the caret goes back to the gap.
118
+ function onFocus(e, i) {
119
+ if (i > latest.current.length) return focus(latest.current.length);
120
+ e.target.select();
121
+ }
122
+
123
+ let n = 0;
124
+ return (
125
+ <div
126
+ role="group"
127
+ aria-label={label}
128
+ className={cx("flex items-center gap-2", disabled && "opacity-50", className)}
129
+ >
130
+ {sizes.map((size, g) => (
131
+ <div key={g} className="contents">
132
+ {g > 0 ? <Icon name="minus" className="shrink-0 text-muted-foreground" /> : null}
133
+ <div className="flex">
134
+ {Array.from({ length: size }, () => {
135
+ const i = n++;
136
+ return (
137
+ <input
138
+ key={i}
139
+ ref={(el) => {
140
+ boxes.current[i] = el;
141
+ }}
142
+ id={i === 0 ? id : undefined}
143
+ type="text"
144
+ inputMode={digitsOnly ? "numeric" : "text"}
145
+ autoComplete={i === 0 ? "one-time-code" : "off"}
146
+ autoCorrect="off"
147
+ autoCapitalize="off"
148
+ spellCheck={false}
149
+ autoFocus={i === 0 ? autoFocus : undefined}
150
+ aria-label={`${digitsOnly ? "Digit" : "Character"} ${i + 1} of ${total}`}
151
+ aria-invalid={invalid ? true : undefined}
152
+ disabled={disabled}
153
+ value={code[i] ?? ""}
154
+ onChange={(e) => onInput(e, i)}
155
+ onKeyDown={(e) => onKeyDown(e, i)}
156
+ onPaste={(e) => onPaste(e, i)}
157
+ onFocus={(e) => onFocus(e, i)}
158
+ onClick={(e) => e.currentTarget.select()}
159
+ data-nums
160
+ className={SLOT}
161
+ />
162
+ );
163
+ })}
164
+ </div>
165
+ </div>
166
+ ))}
167
+ {name ? <input type="hidden" name={name} value={code} /> : null}
168
+ </div>
169
+ );
170
+ }
@@ -0,0 +1,206 @@
1
+ import Link from "next/link";
2
+ import { Children } from "react";
3
+ import { cx } from "./cx";
4
+ import { Icon } from "./icon";
5
+
6
+ // Item — the list row: a contact, a file, a run, a setting. Media on the
7
+ // left, title and description, meta on the right, then its own actions.
8
+ // With `href` or `onClick` the WHOLE row is the target — the title is the
9
+ // real <a> or <button> and stretches over the row, so the row's own
10
+ // actions stay separate buttons (never a button inside a link) and a
11
+ // screen reader hears the title, not the whole row read out.
12
+ //
13
+ // media a node on the left: an avatar, an <img>, a logo
14
+ // icon or a glyph from ./icon, drawn in a muted square
15
+ // title the one line that names the thing (truncates)
16
+ // description up to two lines under it
17
+ // meta a count, a date, a Badge — muted, on the right
18
+ // actions buttons on the far right (IconButton, Menu); they sit above
19
+ // the row's target, so they click on their own
20
+ // href a next/link row · `onClick` a button row · neither: static
21
+ // size default (56px) · sm (44px, for dense lists and rails) ·
22
+ // lg (64px, roomier: a pipeline's runs, a list read at leisure)
23
+ // variant plain (no fill) · outline (a bordered card) · muted (a filled panel)
24
+ // layout row (default) · stacked — a card for a grid: icon or media on
25
+ // top, then the title (up to two lines), the description (up
26
+ // to three), children, and meta at the foot; actions sit in the
27
+ // top-right corner. It fills its grid cell's height, so a row
28
+ // of cards lines up. Pair it with variant="outline" or "muted".
29
+ // The link or button target and what goes where are the row's
30
+ //
31
+ // Where the other props go: `aria-current`, `onClick`, `target` and `rel`
32
+ // belong to the row's target, so they go on its <a> or <button> (with
33
+ // `href`, `onClick` rides on the link: analytics, closing a sheet).
34
+ // aria-current on the target fills the row, so the current page looks
35
+ // like what a screen reader says it is. Every other prop (data-*, id,
36
+ // aria-label…) goes on the row's <div>.
37
+ //
38
+ // ItemGroup stacks plain Items with a rule between each, as a list.
39
+
40
+ const VARIANTS = {
41
+ plain: "",
42
+ outline: "border border-border bg-card text-card-foreground",
43
+ muted: "bg-muted",
44
+ };
45
+
46
+ const SIZES = {
47
+ default: { row: "min-h-14 gap-3 px-3 py-2.5", icon: "size-10", glyph: 18, desc: "line-clamp-2 text-sm" },
48
+ sm: { row: "min-h-11 gap-2.5 px-2.5 py-1.5", icon: "size-8", glyph: 16, desc: "truncate text-xs" },
49
+ lg: { row: "min-h-16 gap-3.5 px-4 py-3", icon: "size-11", glyph: 20, desc: "line-clamp-2 text-sm" },
50
+ };
51
+
52
+ // layout="stacked": the card's padding and gaps, and its icon square.
53
+ const STACKED = {
54
+ default: { box: "gap-3 p-4", icon: "size-10", glyph: 18 },
55
+ sm: { box: "gap-2 p-3", icon: "size-8", glyph: 16 },
56
+ lg: { box: "gap-4 p-5", icon: "size-12", glyph: 22 },
57
+ };
58
+
59
+ const TARGET = "outline-none after:absolute after:inset-0";
60
+
61
+ // The row filled while its target (or a static row itself) is current.
62
+ const CURRENT =
63
+ "has-[[data-item-target][aria-current]:not([aria-current=false])]:bg-accent " +
64
+ "[&[aria-current]:not([aria-current=false])]:bg-accent";
65
+
66
+ export function Item({
67
+ media,
68
+ icon,
69
+ title,
70
+ description,
71
+ meta,
72
+ actions,
73
+ href,
74
+ onClick,
75
+ size = "default",
76
+ variant = "plain",
77
+ layout = "row",
78
+ disabled,
79
+ className,
80
+ children,
81
+ "aria-current": ariaCurrent,
82
+ target,
83
+ rel,
84
+ ...rest
85
+ }) {
86
+ const s = SIZES[size] ?? SIZES.default;
87
+ const interactive = Boolean(href || onClick) && !disabled;
88
+
89
+ let name = title;
90
+ let targeted = false;
91
+ if (href && !disabled) {
92
+ targeted = true;
93
+ name = (
94
+ <Link href={href} onClick={onClick} target={target} rel={rel} aria-current={ariaCurrent} data-item-target className={TARGET}>
95
+ {title}
96
+ </Link>
97
+ );
98
+ } else if (onClick) {
99
+ targeted = true;
100
+ name = (
101
+ <button
102
+ type="button"
103
+ onClick={onClick}
104
+ disabled={disabled}
105
+ aria-current={ariaCurrent}
106
+ data-item-target
107
+ className={cx(TARGET, "text-left disabled:cursor-not-allowed")}
108
+ >
109
+ {title}
110
+ </button>
111
+ );
112
+ }
113
+
114
+ const ring =
115
+ interactive &&
116
+ "hover:bg-accent has-[[data-item-target]:focus-visible]:ring-2 has-[[data-item-target]:focus-visible]:ring-inset has-[[data-item-target]:focus-visible]:ring-ring";
117
+
118
+ if (layout === "stacked") {
119
+ const k = STACKED[size] ?? STACKED.default;
120
+ return (
121
+ <div
122
+ className={cx("relative flex h-full flex-col items-start rounded-lg text-sm", VARIANTS[variant] ?? VARIANTS.plain, k.box, ring, CURRENT, disabled && "opacity-50", className)}
123
+ aria-current={targeted ? undefined : ariaCurrent}
124
+ {...rest}
125
+ >
126
+ {icon ? (
127
+ <span className={cx("flex shrink-0 items-center justify-center rounded-md bg-muted text-muted-foreground", variant === "muted" && "bg-background", k.icon)}>
128
+ <Icon name={icon} size={k.glyph} />
129
+ </span>
130
+ ) : media ? (
131
+ <span className="flex shrink-0 items-center">{media}</span>
132
+ ) : null}
133
+ <div className={cx("w-full min-w-0 flex-1", actions && !icon && !media && "pr-10")}>
134
+ <p className="line-clamp-2 font-medium text-foreground">{name}</p>
135
+ {description ? <p className="mt-1 line-clamp-3 text-sm text-muted-foreground">{description}</p> : null}
136
+ {children ? <div className="mt-2">{children}</div> : null}
137
+ </div>
138
+ {meta !== undefined && meta !== null ? (
139
+ <div data-nums className="text-xs text-muted-foreground">
140
+ {meta}
141
+ </div>
142
+ ) : null}
143
+ {actions ? <div className="absolute right-2 top-2 z-10 flex items-center gap-1">{actions}</div> : null}
144
+ </div>
145
+ );
146
+ }
147
+
148
+ return (
149
+ <div
150
+ className={cx(
151
+ "relative flex items-center rounded-lg text-sm",
152
+ VARIANTS[variant] ?? VARIANTS.plain,
153
+ s.row,
154
+ ring,
155
+ CURRENT,
156
+ disabled && "opacity-50",
157
+ className,
158
+ )}
159
+ aria-current={targeted ? undefined : ariaCurrent}
160
+ {...rest}
161
+ >
162
+ {icon ? (
163
+ <span className={cx("flex shrink-0 items-center justify-center rounded-md bg-muted text-muted-foreground", variant === "muted" && "bg-background", s.icon)}>
164
+ <Icon name={icon} size={s.glyph} />
165
+ </span>
166
+ ) : media ? (
167
+ <span className="flex shrink-0 items-center">{media}</span>
168
+ ) : null}
169
+ <div className="min-w-0 flex-1">
170
+ <p className="truncate font-medium text-foreground">{name}</p>
171
+ {description ? <p className={cx("text-muted-foreground", s.desc)}>{description}</p> : null}
172
+ {children ? <div className="mt-1.5">{children}</div> : null}
173
+ </div>
174
+ {meta !== undefined && meta !== null ? (
175
+ <div data-nums className="shrink-0 text-xs text-muted-foreground">
176
+ {meta}
177
+ </div>
178
+ ) : null}
179
+ {actions ? <div className="relative z-10 flex shrink-0 items-center gap-1">{actions}</div> : null}
180
+ </div>
181
+ );
182
+ }
183
+
184
+ /** Items as a list, a rule between each. `variant="outline"` boxes the
185
+ * whole list; put plain Items in it. */
186
+ export function ItemGroup({ variant = "plain", className, children, "aria-label": ariaLabel }) {
187
+ const rows = Children.toArray(children).filter(Boolean);
188
+ if (rows.length === 0) return null;
189
+ return (
190
+ <ul
191
+ role="list"
192
+ aria-label={ariaLabel}
193
+ className={cx(
194
+ "flex flex-col",
195
+ variant === "outline" && "overflow-hidden rounded-lg border border-border bg-card text-card-foreground [&>li>*]:rounded-none",
196
+ className,
197
+ )}
198
+ >
199
+ {rows.map((row, i) => (
200
+ <li key={row.key ?? i} className={cx(i > 0 && "border-t border-border")}>
201
+ {row}
202
+ </li>
203
+ ))}
204
+ </ul>
205
+ );
206
+ }