makersclaw 0.2.0 → 0.3.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.
- package/THIRD-PARTY-NOTICES.md +180 -0
- package/package.json +3 -2
- package/r/annotate.json +62 -0
- package/r/approval-request.json +52 -0
- package/r/audio-player.json +74 -0
- package/r/auth-form.json +55 -0
- package/r/board.json +10 -6
- package/r/calendar-view.json +105 -0
- package/r/cart.json +62 -0
- package/r/chart.json +83 -0
- package/r/chat.json +95 -0
- package/r/code-editor.json +94 -0
- package/r/comment-box.json +64 -0
- package/r/contact-section.json +53 -0
- package/r/core.json +205 -8
- package/r/csv-import.json +63 -0
- package/r/data-table.json +69 -0
- package/r/diagram.json +74 -0
- package/r/doc-editor.json +82 -0
- package/r/doc-page.json +61 -0
- package/r/email-render.json +73 -0
- package/r/faq.json +50 -0
- package/r/file-upload.json +54 -0
- package/r/flow-canvas.json +93 -0
- package/r/footer.json +52 -0
- package/r/gantt.json +70 -0
- package/r/job-panel.json +12 -7
- package/r/json-editor.json +66 -0
- package/r/map.json +89 -0
- package/r/menubar.json +52 -0
- package/r/mind-map.json +67 -0
- package/r/navigation-menu.json +52 -0
- package/r/order-detail.json +54 -0
- package/r/org-chart.json +66 -0
- package/r/page-builder.json +105 -0
- package/r/payment-methods.json +51 -0
- package/r/pdf-document.json +79 -0
- package/r/pdf-viewer.json +88 -0
- package/r/product-detail.json +76 -0
- package/r/product-grid.json +65 -0
- package/r/record-form.json +67 -0
- package/r/record-notes.json +55 -0
- package/r/registry.json +3411 -29
- package/r/search-dialog.json +51 -0
- package/r/settings-list.json +66 -0
- package/r/setup-checklist.json +51 -0
- package/r/share-dialog.json +52 -0
- package/r/sidebar.json +69 -0
- package/r/signature-pad.json +72 -0
- package/r/sketch-canvas.json +99 -0
- package/r/spreadsheet.json +90 -0
- package/r/stat-cards.json +66 -0
- package/r/task-list.json +63 -0
- package/r/task-model.json +98 -0
- package/r/testimonials.json +52 -0
- package/r/transaction-list.json +53 -0
- package/r/whiteboard.json +66 -0
- package/registry/blocks/annotate/README.md +179 -0
- package/registry/blocks/annotate/annotate-data.js +250 -0
- package/registry/blocks/annotate/annotate.jsx +646 -0
- package/registry/blocks/annotate/block.json +10 -0
- package/registry/blocks/annotate/demo.jsx +135 -0
- package/registry/blocks/annotate/index.js +15 -0
- package/registry/blocks/approval-request/README.md +116 -0
- package/registry/blocks/approval-request/approval-request.jsx +386 -0
- package/registry/blocks/approval-request/block.json +10 -0
- package/registry/blocks/approval-request/demo.jsx +127 -0
- package/registry/blocks/approval-request/index.js +4 -0
- package/registry/blocks/audio-player/README.md +167 -0
- package/registry/blocks/audio-player/audio-player.jsx +623 -0
- package/registry/blocks/audio-player/block.json +14 -0
- package/registry/blocks/audio-player/colors.js +109 -0
- package/registry/blocks/audio-player/demo.jsx +209 -0
- package/registry/blocks/audio-player/index.js +6 -0
- package/registry/blocks/audio-player/time.js +67 -0
- package/registry/blocks/audio-player/wavesurfer.js +9 -0
- package/registry/blocks/auth-form/README.md +126 -0
- package/registry/blocks/auth-form/auth-form.jsx +568 -0
- package/registry/blocks/auth-form/block.json +10 -0
- package/registry/blocks/auth-form/demo.jsx +131 -0
- package/registry/blocks/auth-form/index.js +3 -0
- package/registry/blocks/board/README.md +55 -5
- package/registry/blocks/board/block.json +2 -2
- package/registry/blocks/board/board.jsx +230 -86
- package/registry/blocks/board/demo.jsx +103 -24
- package/registry/blocks/calendar-view/README.md +180 -0
- package/registry/blocks/calendar-view/agenda.jsx +147 -0
- package/registry/blocks/calendar-view/block.json +76 -0
- package/registry/blocks/calendar-view/calendar-model.js +442 -0
- package/registry/blocks/calendar-view/calendar.jsx +627 -0
- package/registry/blocks/calendar-view/demo.jsx +195 -0
- package/registry/blocks/calendar-view/draft.jsx +49 -0
- package/registry/blocks/calendar-view/index.js +39 -0
- package/registry/blocks/calendar-view/month.jsx +346 -0
- package/registry/blocks/calendar-view/paint.js +69 -0
- package/registry/blocks/calendar-view/time-grid.jsx +527 -0
- package/registry/blocks/calendar-view/tray.jsx +87 -0
- package/registry/blocks/cart/README.md +146 -0
- package/registry/blocks/cart/block.json +10 -0
- package/registry/blocks/cart/cart.jsx +597 -0
- package/registry/blocks/cart/demo.jsx +98 -0
- package/registry/blocks/cart/index.js +4 -0
- package/registry/blocks/cart/money.js +28 -0
- package/registry/blocks/chart/README.md +316 -0
- package/registry/blocks/chart/block.json +10 -0
- package/registry/blocks/chart/cartesian.jsx +642 -0
- package/registry/blocks/chart/core.jsx +262 -0
- package/registry/blocks/chart/demo.jsx +357 -0
- package/registry/blocks/chart/heatmap.jsx +336 -0
- package/registry/blocks/chart/index.js +8 -0
- package/registry/blocks/chart/pie.jsx +245 -0
- package/registry/blocks/chart/sparkline.jsx +88 -0
- package/registry/blocks/chat/README.md +273 -0
- package/registry/blocks/chat/attachment.jsx +95 -0
- package/registry/blocks/chat/block.json +10 -0
- package/registry/blocks/chat/chat.jsx +132 -0
- package/registry/blocks/chat/composer.jsx +364 -0
- package/registry/blocks/chat/demo.jsx +578 -0
- package/registry/blocks/chat/header.jsx +34 -0
- package/registry/blocks/chat/index.js +9 -0
- package/registry/blocks/chat/message.jsx +450 -0
- package/registry/blocks/chat/scroller.jsx +247 -0
- package/registry/blocks/chat/text.jsx +104 -0
- package/registry/blocks/code-editor/README.md +210 -0
- package/registry/blocks/code-editor/block.json +22 -0
- package/registry/blocks/code-editor/code-editor.jsx +534 -0
- package/registry/blocks/code-editor/codemirror.js +38 -0
- package/registry/blocks/code-editor/demo.jsx +205 -0
- package/registry/blocks/code-editor/index.js +8 -0
- package/registry/blocks/code-editor/json.js +317 -0
- package/registry/blocks/code-editor/sql.js +136 -0
- package/registry/blocks/code-editor/text.js +101 -0
- package/registry/blocks/code-editor/theme.js +186 -0
- package/registry/blocks/comment-box/README.md +123 -0
- package/registry/blocks/comment-box/block.json +10 -0
- package/registry/blocks/comment-box/comment-body.jsx +217 -0
- package/registry/blocks/comment-box/comment-box.jsx +198 -0
- package/registry/blocks/comment-box/comment-time.jsx +77 -0
- package/registry/blocks/comment-box/demo.jsx +141 -0
- package/registry/blocks/comment-box/index.js +8 -0
- package/registry/blocks/contact-section/README.md +152 -0
- package/registry/blocks/contact-section/block.json +11 -0
- package/registry/blocks/contact-section/contact-section.jsx +509 -0
- package/registry/blocks/contact-section/demo.jsx +93 -0
- package/registry/blocks/contact-section/index.js +4 -0
- package/registry/blocks/csv-import/README.md +133 -0
- package/registry/blocks/csv-import/block.json +13 -0
- package/registry/blocks/csv-import/csv-import.jsx +479 -0
- package/registry/blocks/csv-import/demo.jsx +106 -0
- package/registry/blocks/csv-import/import.js +200 -0
- package/registry/blocks/csv-import/index.js +7 -0
- package/registry/blocks/data-table/README.md +386 -0
- package/registry/blocks/data-table/block.json +10 -0
- package/registry/blocks/data-table/data-table.jsx +1164 -0
- package/registry/blocks/data-table/demo.jsx +588 -0
- package/registry/blocks/data-table/index.js +5 -0
- package/registry/blocks/data-table/model.js +169 -0
- package/registry/blocks/diagram/README.md +108 -0
- package/registry/blocks/diagram/block.json +13 -0
- package/registry/blocks/diagram/demo.jsx +113 -0
- package/registry/blocks/diagram/diagram.jsx +481 -0
- package/registry/blocks/diagram/index.js +7 -0
- package/registry/blocks/diagram/mermaid.js +52 -0
- package/registry/blocks/diagram/palette.js +313 -0
- package/registry/blocks/diagram/source.js +98 -0
- package/registry/blocks/doc-editor/README.md +215 -0
- package/registry/blocks/doc-editor/block.json +15 -0
- package/registry/blocks/doc-editor/demo.jsx +225 -0
- package/registry/blocks/doc-editor/doc-editor.jsx +291 -0
- package/registry/blocks/doc-editor/doc.js +309 -0
- package/registry/blocks/doc-editor/index.js +7 -0
- package/registry/blocks/doc-editor/schema.jsx +56 -0
- package/registry/blocks/doc-editor/shadcn-classes.js +110 -0
- package/registry/blocks/doc-editor/theme.js +82 -0
- package/registry/blocks/doc-page/README.md +119 -0
- package/registry/blocks/doc-page/autosave.js +104 -0
- package/registry/blocks/doc-page/block.json +10 -0
- package/registry/blocks/doc-page/demo.jsx +137 -0
- package/registry/blocks/doc-page/doc-page.jsx +276 -0
- package/registry/blocks/doc-page/index.js +4 -0
- package/registry/blocks/email-render/README.md +151 -0
- package/registry/blocks/email-render/block.json +14 -0
- package/registry/blocks/email-render/demo.jsx +153 -0
- package/registry/blocks/email-render/doc-email.jsx +210 -0
- package/registry/blocks/email-render/email.jsx +221 -0
- package/registry/blocks/email-render/index.js +10 -0
- package/registry/blocks/email-render/render.js +50 -0
- package/registry/blocks/email-render/theme.js +215 -0
- package/registry/blocks/faq/README.md +101 -0
- package/registry/blocks/faq/block.json +11 -0
- package/registry/blocks/faq/demo.jsx +89 -0
- package/registry/blocks/faq/faq.jsx +220 -0
- package/registry/blocks/faq/index.js +4 -0
- package/registry/blocks/file-upload/README.md +138 -0
- package/registry/blocks/file-upload/block.json +10 -0
- package/registry/blocks/file-upload/demo.jsx +204 -0
- package/registry/blocks/file-upload/file-upload.jsx +635 -0
- package/registry/blocks/file-upload/index.js +4 -0
- package/registry/blocks/flow-canvas/README.md +420 -0
- package/registry/blocks/flow-canvas/block.json +13 -0
- package/registry/blocks/flow-canvas/board.js +819 -0
- package/registry/blocks/flow-canvas/chrome.jsx +649 -0
- package/registry/blocks/flow-canvas/context.jsx +35 -0
- package/registry/blocks/flow-canvas/demo.jsx +249 -0
- package/registry/blocks/flow-canvas/edges.jsx +107 -0
- package/registry/blocks/flow-canvas/flow-canvas.jsx +1329 -0
- package/registry/blocks/flow-canvas/index.js +41 -0
- package/registry/blocks/flow-canvas/nodes.jsx +392 -0
- package/registry/blocks/flow-canvas/theme.js +174 -0
- package/registry/blocks/footer/README.md +133 -0
- package/registry/blocks/footer/block.json +11 -0
- package/registry/blocks/footer/demo.jsx +119 -0
- package/registry/blocks/footer/footer.jsx +406 -0
- package/registry/blocks/footer/index.js +4 -0
- package/registry/blocks/gantt/README.md +220 -0
- package/registry/blocks/gantt/block.json +10 -0
- package/registry/blocks/gantt/demo.jsx +148 -0
- package/registry/blocks/gantt/gantt.jsx +923 -0
- package/registry/blocks/gantt/index.js +7 -0
- package/registry/blocks/gantt/rows.jsx +468 -0
- package/registry/blocks/gantt/schedule.js +278 -0
- package/registry/blocks/job-panel/README.md +80 -0
- package/registry/blocks/job-panel/block.json +3 -3
- package/registry/blocks/job-panel/demo.jsx +230 -3
- package/registry/blocks/job-panel/job-panel.jsx +169 -3
- package/registry/blocks/json-editor/README.md +133 -0
- package/registry/blocks/json-editor/block.json +10 -0
- package/registry/blocks/json-editor/demo.jsx +92 -0
- package/registry/blocks/json-editor/index.js +7 -0
- package/registry/blocks/json-editor/json-editor.jsx +305 -0
- package/registry/blocks/json-editor/json-tree.jsx +393 -0
- package/registry/blocks/json-editor/tree.js +225 -0
- package/registry/blocks/map/README.md +221 -0
- package/registry/blocks/map/block.json +14 -0
- package/registry/blocks/map/demo.jsx +201 -0
- package/registry/blocks/map/geo.js +198 -0
- package/registry/blocks/map/index.js +8 -0
- package/registry/blocks/map/list.jsx +128 -0
- package/registry/blocks/map/map-view.jsx +715 -0
- package/registry/blocks/map/maplibre.js +30 -0
- package/registry/blocks/map/marks.jsx +146 -0
- package/registry/blocks/map/theme.js +142 -0
- package/registry/blocks/menubar/README.md +109 -0
- package/registry/blocks/menubar/block.json +10 -0
- package/registry/blocks/menubar/demo.jsx +128 -0
- package/registry/blocks/menubar/index.js +4 -0
- package/registry/blocks/menubar/menubar.jsx +199 -0
- package/registry/blocks/mind-map/README.md +206 -0
- package/registry/blocks/mind-map/block.json +10 -0
- package/registry/blocks/mind-map/demo.jsx +103 -0
- package/registry/blocks/mind-map/index.js +31 -0
- package/registry/blocks/mind-map/mind-map.jsx +1125 -0
- package/registry/blocks/mind-map/topic.jsx +143 -0
- package/registry/blocks/mind-map/tree.js +645 -0
- package/registry/blocks/navigation-menu/README.md +124 -0
- package/registry/blocks/navigation-menu/block.json +10 -0
- package/registry/blocks/navigation-menu/demo.jsx +84 -0
- package/registry/blocks/navigation-menu/index.js +4 -0
- package/registry/blocks/navigation-menu/navigation-menu.jsx +448 -0
- package/registry/blocks/order-detail/README.md +109 -0
- package/registry/blocks/order-detail/block.json +10 -0
- package/registry/blocks/order-detail/demo.jsx +88 -0
- package/registry/blocks/order-detail/index.js +4 -0
- package/registry/blocks/order-detail/order-detail.jsx +354 -0
- package/registry/blocks/org-chart/README.md +145 -0
- package/registry/blocks/org-chart/block.json +10 -0
- package/registry/blocks/org-chart/demo.jsx +94 -0
- package/registry/blocks/org-chart/index.js +7 -0
- package/registry/blocks/org-chart/org-chart.jsx +631 -0
- package/registry/blocks/org-chart/org.js +245 -0
- package/registry/blocks/org-chart/person.jsx +96 -0
- package/registry/blocks/page-builder/README.md +257 -0
- package/registry/blocks/page-builder/block.json +14 -0
- package/registry/blocks/page-builder/demo.jsx +145 -0
- package/registry/blocks/page-builder/grapes.js +18 -0
- package/registry/blocks/page-builder/index.js +11 -0
- package/registry/blocks/page-builder/page-builder.jsx +704 -0
- package/registry/blocks/page-builder/page-view.jsx +33 -0
- package/registry/blocks/page-builder/page.js +118 -0
- package/registry/blocks/page-builder/panels.jsx +588 -0
- package/registry/blocks/page-builder/sections.js +209 -0
- package/registry/blocks/page-builder/theme.js +87 -0
- package/registry/blocks/page-builder/thumbs.jsx +189 -0
- package/registry/blocks/page-builder/tokens.js +329 -0
- package/registry/blocks/payment-methods/README.md +104 -0
- package/registry/blocks/payment-methods/block.json +10 -0
- package/registry/blocks/payment-methods/demo.jsx +71 -0
- package/registry/blocks/payment-methods/index.js +4 -0
- package/registry/blocks/payment-methods/payment-methods.jsx +302 -0
- package/registry/blocks/pdf-document/README.md +213 -0
- package/registry/blocks/pdf-document/block.json +13 -0
- package/registry/blocks/pdf-document/demo.jsx +136 -0
- package/registry/blocks/pdf-document/index.js +33 -0
- package/registry/blocks/pdf-document/money.js +83 -0
- package/registry/blocks/pdf-document/pdf-document.jsx +144 -0
- package/registry/blocks/pdf-document/primitives.jsx +271 -0
- package/registry/blocks/pdf-document/quote.jsx +179 -0
- package/registry/blocks/pdf-document/theme.js +193 -0
- package/registry/blocks/pdf-viewer/README.md +191 -0
- package/registry/blocks/pdf-viewer/block.json +14 -0
- package/registry/blocks/pdf-viewer/demo.jsx +252 -0
- package/registry/blocks/pdf-viewer/helpers.js +270 -0
- package/registry/blocks/pdf-viewer/index.js +8 -0
- package/registry/blocks/pdf-viewer/notes.jsx +195 -0
- package/registry/blocks/pdf-viewer/pdf-viewer.jsx +1368 -0
- package/registry/blocks/pdf-viewer/pdfjs.js +37 -0
- package/registry/blocks/pdf-viewer/ssr-shim-end.js +6 -0
- package/registry/blocks/pdf-viewer/ssr-shim.js +44 -0
- package/registry/blocks/product-detail/README.md +217 -0
- package/registry/blocks/product-detail/block.json +10 -0
- package/registry/blocks/product-detail/demo.jsx +233 -0
- package/registry/blocks/product-detail/index.js +7 -0
- package/registry/blocks/product-detail/price.jsx +115 -0
- package/registry/blocks/product-detail/product-detail.jsx +348 -0
- package/registry/blocks/product-detail/product-media.jsx +102 -0
- package/registry/blocks/product-detail/product-options.jsx +144 -0
- package/registry/blocks/product-grid/README.md +162 -0
- package/registry/blocks/product-grid/block.json +10 -0
- package/registry/blocks/product-grid/demo.jsx +255 -0
- package/registry/blocks/product-grid/index.js +5 -0
- package/registry/blocks/product-grid/product-card.jsx +232 -0
- package/registry/blocks/product-grid/product-grid.jsx +235 -0
- package/registry/blocks/record-form/README.md +196 -0
- package/registry/blocks/record-form/block.json +10 -0
- package/registry/blocks/record-form/demo.jsx +525 -0
- package/registry/blocks/record-form/index.js +4 -0
- package/registry/blocks/record-form/record-fields.jsx +457 -0
- package/registry/blocks/record-form/record-form.jsx +415 -0
- package/registry/blocks/record-form/rules.js +81 -0
- package/registry/blocks/record-notes/README.md +139 -0
- package/registry/blocks/record-notes/block.json +10 -0
- package/registry/blocks/record-notes/demo.jsx +179 -0
- package/registry/blocks/record-notes/index.js +4 -0
- package/registry/blocks/record-notes/record-notes.jsx +266 -0
- package/registry/blocks/search-dialog/README.md +108 -0
- package/registry/blocks/search-dialog/block.json +10 -0
- package/registry/blocks/search-dialog/demo.jsx +116 -0
- package/registry/blocks/search-dialog/index.js +3 -0
- package/registry/blocks/search-dialog/search-dialog.jsx +235 -0
- package/registry/blocks/settings-list/README.md +171 -0
- package/registry/blocks/settings-list/block.json +10 -0
- package/registry/blocks/settings-list/demo.jsx +333 -0
- package/registry/blocks/settings-list/index.js +4 -0
- package/registry/blocks/settings-list/row-state.jsx +93 -0
- package/registry/blocks/settings-list/settings-list.jsx +349 -0
- package/registry/blocks/settings-list/settings-matrix.jsx +118 -0
- package/registry/blocks/setup-checklist/README.md +142 -0
- package/registry/blocks/setup-checklist/block.json +10 -0
- package/registry/blocks/setup-checklist/demo.jsx +159 -0
- package/registry/blocks/setup-checklist/index.js +4 -0
- package/registry/blocks/setup-checklist/setup-checklist.jsx +446 -0
- package/registry/blocks/share-dialog/README.md +113 -0
- package/registry/blocks/share-dialog/block.json +10 -0
- package/registry/blocks/share-dialog/demo.jsx +140 -0
- package/registry/blocks/share-dialog/index.js +3 -0
- package/registry/blocks/share-dialog/share-dialog.jsx +384 -0
- package/registry/blocks/sidebar/README.md +190 -0
- package/registry/blocks/sidebar/block.json +43 -0
- package/registry/blocks/sidebar/demo.jsx +577 -0
- package/registry/blocks/sidebar/index.js +4 -0
- package/registry/blocks/sidebar/sidebar-panel.jsx +149 -0
- package/registry/blocks/sidebar/sidebar.jsx +864 -0
- package/registry/blocks/signature-pad/README.md +137 -0
- package/registry/blocks/signature-pad/block.json +13 -0
- package/registry/blocks/signature-pad/colors.js +115 -0
- package/registry/blocks/signature-pad/demo.jsx +94 -0
- package/registry/blocks/signature-pad/index.js +6 -0
- package/registry/blocks/signature-pad/pad.js +7 -0
- package/registry/blocks/signature-pad/signature-pad.jsx +434 -0
- package/registry/blocks/signature-pad/signature.js +68 -0
- package/registry/blocks/sketch-canvas/README.md +280 -0
- package/registry/blocks/sketch-canvas/block.json +13 -0
- package/registry/blocks/sketch-canvas/demo.jsx +159 -0
- package/registry/blocks/sketch-canvas/excalidraw.js +40 -0
- package/registry/blocks/sketch-canvas/index.js +9 -0
- package/registry/blocks/sketch-canvas/palette.js +226 -0
- package/registry/blocks/sketch-canvas/sketch-canvas.jsx +1188 -0
- package/registry/blocks/sketch-canvas/sketch.js +179 -0
- package/registry/blocks/sketch-canvas/ssr-shim-end.js +6 -0
- package/registry/blocks/sketch-canvas/ssr-shim.js +45 -0
- package/registry/blocks/sketch-canvas/stamps.js +104 -0
- package/registry/blocks/sketch-canvas/theme.js +131 -0
- package/registry/blocks/spreadsheet/README.md +307 -0
- package/registry/blocks/spreadsheet/block.json +13 -0
- package/registry/blocks/spreadsheet/cells.jsx +455 -0
- package/registry/blocks/spreadsheet/chrome.jsx +325 -0
- package/registry/blocks/spreadsheet/demo.jsx +177 -0
- package/registry/blocks/spreadsheet/grid.js +387 -0
- package/registry/blocks/spreadsheet/index.js +34 -0
- package/registry/blocks/spreadsheet/spreadsheet.jsx +1732 -0
- package/registry/blocks/spreadsheet/types.js +473 -0
- package/registry/blocks/stat-cards/README.md +173 -0
- package/registry/blocks/stat-cards/block.json +10 -0
- package/registry/blocks/stat-cards/demo.jsx +257 -0
- package/registry/blocks/stat-cards/index.js +4 -0
- package/registry/blocks/stat-cards/stat-cards.jsx +307 -0
- package/registry/blocks/stat-cards/usage.jsx +243 -0
- package/registry/blocks/task-list/README.md +176 -0
- package/registry/blocks/task-list/block.json +10 -0
- package/registry/blocks/task-list/demo.jsx +134 -0
- package/registry/blocks/task-list/index.js +5 -0
- package/registry/blocks/task-list/task-list.jsx +907 -0
- package/registry/blocks/task-model/README.md +455 -0
- package/registry/blocks/task-model/block.json +167 -0
- package/registry/blocks/task-model/changes.js +89 -0
- package/registry/blocks/task-model/dates.js +371 -0
- package/registry/blocks/task-model/demo.jsx +215 -0
- package/registry/blocks/task-model/dnd.jsx +240 -0
- package/registry/blocks/task-model/index.js +97 -0
- package/registry/blocks/task-model/model.js +919 -0
- package/registry/blocks/task-model/parts.jsx +449 -0
- package/registry/blocks/task-model/toolbar.jsx +271 -0
- package/registry/blocks/testimonials/README.md +139 -0
- package/registry/blocks/testimonials/block.json +11 -0
- package/registry/blocks/testimonials/demo.jsx +137 -0
- package/registry/blocks/testimonials/index.js +4 -0
- package/registry/blocks/testimonials/testimonials.jsx +430 -0
- package/registry/blocks/transaction-list/README.md +126 -0
- package/registry/blocks/transaction-list/block.json +10 -0
- package/registry/blocks/transaction-list/demo.jsx +79 -0
- package/registry/blocks/transaction-list/index.js +4 -0
- package/registry/blocks/transaction-list/transaction-list.jsx +383 -0
- package/registry/blocks/whiteboard/README.md +179 -0
- package/registry/blocks/whiteboard/block.json +10 -0
- package/registry/blocks/whiteboard/demo.jsx +169 -0
- package/registry/blocks/whiteboard/index.js +6 -0
- package/registry/blocks/whiteboard/templates.js +150 -0
- package/registry/blocks/whiteboard/whiteboard.jsx +721 -0
- package/src/install.mjs +18 -0
- package/src/shadcn.mjs +8 -0
- package/templates/next/files/README.md +145 -11
- package/templates/next/files/app/globals.css +55 -4
- package/templates/next/files/check/run.mjs +3 -3
- package/templates/next/files/components/ui/avatar.jsx +141 -0
- package/templates/next/files/components/ui/breadcrumb.jsx +149 -0
- package/templates/next/files/components/ui/button-group.jsx +70 -0
- package/templates/next/files/components/ui/button.jsx +132 -12
- package/templates/next/files/components/ui/calendar.jsx +609 -0
- package/templates/next/files/components/ui/carousel.jsx +281 -0
- package/templates/next/files/components/ui/collapsible.jsx +208 -0
- package/templates/next/files/components/ui/combobox.jsx +608 -0
- package/templates/next/files/components/ui/command.jsx +577 -0
- package/templates/next/files/components/ui/context-menu.jsx +191 -0
- package/templates/next/files/components/ui/date-picker.jsx +360 -0
- package/templates/next/files/components/ui/distribution.jsx +117 -0
- package/templates/next/files/components/ui/feedback.jsx +143 -0
- package/templates/next/files/components/ui/field.jsx +115 -3
- package/templates/next/files/components/ui/file-input.jsx +234 -0
- package/templates/next/files/components/ui/icon.jsx +130 -8
- package/templates/next/files/components/ui/image.jsx +143 -0
- package/templates/next/files/components/ui/index.js +47 -2
- package/templates/next/files/components/ui/input-group.jsx +213 -0
- package/templates/next/files/components/ui/input-otp.jsx +170 -0
- package/templates/next/files/components/ui/item.jsx +206 -0
- package/templates/next/files/components/ui/menu.jsx +454 -82
- package/templates/next/files/components/ui/notice.jsx +126 -14
- package/templates/next/files/components/ui/pagination.jsx +156 -0
- package/templates/next/files/components/ui/popover.jsx +284 -0
- package/templates/next/files/components/ui/radio.jsx +193 -0
- package/templates/next/files/components/ui/rating.jsx +131 -0
- package/templates/next/files/components/ui/resizable.jsx +338 -0
- package/templates/next/files/components/ui/scroll-area.jsx +123 -0
- package/templates/next/files/components/ui/separator.jsx +119 -0
- package/templates/next/files/components/ui/sheet.jsx +96 -11
- package/templates/next/files/components/ui/slider.jsx +174 -0
- package/templates/next/files/components/ui/stat.jsx +574 -0
- package/templates/next/files/components/ui/steps.jsx +338 -0
- package/templates/next/files/components/ui/swatch.jsx +33 -0
- package/templates/next/files/components/ui/table.jsx +130 -0
- package/templates/next/files/components/ui/toast.jsx +440 -0
- package/templates/next/files/components/ui/toggle.jsx +195 -0
- package/templates/next/files/components/ui/tooltip.jsx +270 -0
- package/templates/next/template.json +264 -8
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// Money in the reader's words, and the sums a cart and its summary share.
|
|
2
|
+
// Prices are numbers in the currency's major unit (19.5 is $19.50).
|
|
3
|
+
|
|
4
|
+
const formats = new Map();
|
|
5
|
+
|
|
6
|
+
export function money(amount, currency = "USD", locale) {
|
|
7
|
+
const key = `${locale ?? ""}|${currency}`;
|
|
8
|
+
let f = formats.get(key);
|
|
9
|
+
if (!f) {
|
|
10
|
+
try {
|
|
11
|
+
f = new Intl.NumberFormat(locale, { style: "currency", currency });
|
|
12
|
+
} catch {
|
|
13
|
+
f = new Intl.NumberFormat(locale, { style: "currency", currency: "USD" });
|
|
14
|
+
}
|
|
15
|
+
formats.set(key, f);
|
|
16
|
+
}
|
|
17
|
+
return f.format(Number(amount) || 0);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export const lineTotal = (item) => (Number(item.price) || 0) * (Number(item.quantity) || 0);
|
|
21
|
+
|
|
22
|
+
export const subtotalOf = (items) => (items ?? []).reduce((sum, item) => sum + lineTotal(item), 0);
|
|
23
|
+
|
|
24
|
+
export const countOf = (items) => (items ?? []).reduce((sum, item) => sum + (Number(item.quantity) || 0), 0);
|
|
25
|
+
|
|
26
|
+
// A charge row's amount: a number is added to the total; a string
|
|
27
|
+
// ("Calculated at payment") is shown as written and adds nothing.
|
|
28
|
+
export const asAmount = (v) => (typeof v === "number" && Number.isFinite(v) ? v : 0);
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
# Chart
|
|
2
|
+
|
|
3
|
+
Numbers as a shape: `LineChart`, `AreaChart` (stacked or not), `BarChart`
|
|
4
|
+
(grouped or stacked, columns or bars), `PieChart` (a pie or a donut with
|
|
5
|
+
the total in its middle), `Sparkline` (a trend beside a KPI) and
|
|
6
|
+
`HeatmapChart` (a grid of two dimensions, each cell shaded by its value,
|
|
7
|
+
with `ScaleLegend` as its key). Drawn in SVG (the heatmap as an HTML
|
|
8
|
+
table), no chart library, in the workspace's chart colours. Each one is as
|
|
9
|
+
wide as its container and redraws when that changes. Hover, touch or the
|
|
10
|
+
arrow keys show a tooltip with a crosshair; the legend hides and shows a
|
|
11
|
+
series; a screen reader gets a summary and the numbers as a table; with
|
|
12
|
+
reduced motion nothing animates.
|
|
13
|
+
|
|
14
|
+
```jsx
|
|
15
|
+
import { AreaChart, BarChart, HeatmapChart, PieChart, Sparkline } from "../components/blocks/chart"; // a Makersclaw app ("./blocks/chart" from components/)
|
|
16
|
+
import { AreaChart, BarChart, HeatmapChart, PieChart, Sparkline } from "@/components/makersclaw/blocks/chart"; // a shadcn project
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
They are client components: render them from a `"use client"` component,
|
|
20
|
+
and load the rows in the server surface (README §4). Put a chart in a
|
|
21
|
+
`Card` — the card gives the title; the chart is only the picture.
|
|
22
|
+
|
|
23
|
+
## The data
|
|
24
|
+
|
|
25
|
+
Rows, as `loadRows` returns them. One key holds the x (a month, a stage,
|
|
26
|
+
a week) and each series is another key holding a number, in the order the
|
|
27
|
+
x should read — sort in `loadRows`. A value that is missing or not a number
|
|
28
|
+
is a gap in a line and nothing in a bar or an area.
|
|
29
|
+
|
|
30
|
+
```js
|
|
31
|
+
[{ month: "Jan", newBiz: 24600, expansion: 8100 }, { month: "Feb", newBiz: 26900, expansion: 8800 }]
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
A pie takes one row per slice: a key for the name, a key for the value.
|
|
35
|
+
|
|
36
|
+
A heatmap takes one row per grid row: a key for the row's name and one key
|
|
37
|
+
per column holding its number — a pivot, shaped in the query:
|
|
38
|
+
|
|
39
|
+
```js
|
|
40
|
+
[{ slot: "9–12", mon: 42, tue: 51, wed: 38 }, { slot: "12–15", mon: 18, tue: 24, wed: 65 }]
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Colours
|
|
44
|
+
|
|
45
|
+
`series[].tone` picks a colour: `"chart-1"` … `"chart-5"` (or `1` … `5`).
|
|
46
|
+
Left out, the series take chart-1, chart-2, … in order. The chart colours
|
|
47
|
+
come from the workspace theme (`app/globals.css`, `--color-chart-N`): the
|
|
48
|
+
first is the theme's primary, the others turn its hue so neighbours stay
|
|
49
|
+
apart in every theme. A series that means a status may take a theme tone
|
|
50
|
+
instead: `"success"`, `"warning"`, `"danger"`, `"info"`, `"primary"`,
|
|
51
|
+
`"muted"`. In your own markup around a chart use the same classes:
|
|
52
|
+
`bg-chart-1`, `text-chart-2`, `fill-chart-3`, `stroke-chart-4`.
|
|
53
|
+
|
|
54
|
+
## Props
|
|
55
|
+
|
|
56
|
+
### LineChart · AreaChart · BarChart
|
|
57
|
+
|
|
58
|
+
- `data` — the rows. Empty (or missing) shows the empty state.
|
|
59
|
+
- `x` — the key that holds each row's x, e.g. `"month"`.
|
|
60
|
+
- `series` — what to draw, in order: `[{ key, label?, tone?, muted?,
|
|
61
|
+
dashed? }]`. `label` defaults to the key, humanised.
|
|
62
|
+
- `dashed` — LineChart and AreaChart: a dashed line with no fill under
|
|
63
|
+
it. The key and the tooltip show a dashed swatch.
|
|
64
|
+
- `muted` — drawn quieter and underneath the rest: the grey (unless it
|
|
65
|
+
has its own `tone`), a thinner line, a fainter fill. On a BarChart it
|
|
66
|
+
is only the grey.
|
|
67
|
+
- Together they are a "previous period" to compare against:
|
|
68
|
+
|
|
69
|
+
```jsx
|
|
70
|
+
<LineChart
|
|
71
|
+
data={days} // [{ day: "Mon", thisWeek: 42, lastWeek: 35 }, …]
|
|
72
|
+
x="day"
|
|
73
|
+
series={[{ key: "thisWeek", label: "This week" }, { key: "lastWeek", label: "Last week", muted: true, dashed: true }]}
|
|
74
|
+
label="Signups, this week against last"
|
|
75
|
+
/>
|
|
76
|
+
```
|
|
77
|
+
- `format(value)` — how a value reads in the tooltip, the summary and the
|
|
78
|
+
table. Default: `1,250` · `48.2K`.
|
|
79
|
+
- `formatAxis(value)` — how a tick reads (default `format`); give a
|
|
80
|
+
shorter one when `format` is long (`$48,200` → `$48K`).
|
|
81
|
+
- `formatX(xValue, row)` — how an x reads (default: as written).
|
|
82
|
+
- `label` — what the chart is, for a screen reader: `"Revenue by month"`.
|
|
83
|
+
Default `"Chart"`; always set it.
|
|
84
|
+
- `description` — the sentence a screen reader hears after `label`.
|
|
85
|
+
Default: made from the data (the range, each series' first, last and
|
|
86
|
+
highest value).
|
|
87
|
+
- `xLabel` — the x column's heading in the hidden table (default: the key,
|
|
88
|
+
humanised).
|
|
89
|
+
- `height` — pixels, default `240`. The width is the container's.
|
|
90
|
+
- `stacked` — AreaChart and BarChart: pile the series (negatives stack
|
|
91
|
+
down). The tooltip adds a total. Default `false`.
|
|
92
|
+
- `orientation` — BarChart: `"vertical"` (columns, the default) or
|
|
93
|
+
`"horizontal"` (bars, categories down the left — for long names).
|
|
94
|
+
- `valueLabels` — BarChart: each bar's value at its end ("10%"), in
|
|
95
|
+
`format`; stacked, the stack's total. `true`, or `(value, row, key)` →
|
|
96
|
+
the words (`key` is null for a total). With it the value axis is often
|
|
97
|
+
noise: `xAxis={false}` (horizontal) or `yAxis={false}`. Default `false`.
|
|
98
|
+
- `track` — BarChart: a quiet full-length track behind every bar, for a
|
|
99
|
+
share or a distribution (a status's share of tickets). Pair it with
|
|
100
|
+
`grid={false}`. Default `false`.
|
|
101
|
+
- `curve` — LineChart and AreaChart: `"monotone"` (default, smooth and
|
|
102
|
+
never overshooting), `"linear"` or `"step"`.
|
|
103
|
+
- `dots` — LineChart and AreaChart: a dot on every point. Default `false`.
|
|
104
|
+
- `grid` · `xAxis` · `yAxis` — gridlines and the two axes' labels. All
|
|
105
|
+
default `true`.
|
|
106
|
+
- `legend` — the legend under the chart; its entries are toggles that hide
|
|
107
|
+
a series. Default: shown when there is more than one series.
|
|
108
|
+
- `tooltip` — default `true`.
|
|
109
|
+
- `onSelect(row, index)` — a click, a tap or Enter on a point or a bar
|
|
110
|
+
calls it: open the month, filter by the stage.
|
|
111
|
+
- `emptyLabel` · `emptyBody` — what the empty state says. Default
|
|
112
|
+
`"No data yet"`.
|
|
113
|
+
- `className` — layout around it (width, margin). Never colour.
|
|
114
|
+
|
|
115
|
+
### PieChart
|
|
116
|
+
|
|
117
|
+
- `data` — one row per slice.
|
|
118
|
+
- `name` — the key holding a slice's name, default `"name"`.
|
|
119
|
+
- `value` — the key holding its number, default `"value"`. Zero and
|
|
120
|
+
negative values draw nothing.
|
|
121
|
+
- `donut` — open the middle. It shows the total, and the picked slice's
|
|
122
|
+
value and share while one is picked. Default `false`.
|
|
123
|
+
- `centerLabel` — a donut's middle instead of the total: a string, or
|
|
124
|
+
`{ value, label }`.
|
|
125
|
+
- `totalLabel` — the words under the total, default `"Total"`.
|
|
126
|
+
- `format(value)` · `formatName(name, row)` · `label` · `description` ·
|
|
127
|
+
`height` · `tooltip` · `onSelect(row, index)` · `emptyLabel` ·
|
|
128
|
+
`emptyBody` · `className` — as above.
|
|
129
|
+
- `legend` — default `true`; hiding a slice re-shares the rest.
|
|
130
|
+
- `legendValues` — what follows each name in the legend: `"percent"`
|
|
131
|
+
(default), `"value"` or `"none"`.
|
|
132
|
+
- A row's own `tone` colours its slice; otherwise chart-1 … chart-5 in
|
|
133
|
+
order (a sixth slice repeats chart-1 — five is the most a pie reads).
|
|
134
|
+
|
|
135
|
+
### Sparkline
|
|
136
|
+
|
|
137
|
+
A trend with no axes, gridlines, legend or tooltip, as wide as its box
|
|
138
|
+
and `height` tall — small enough to sit under a kit `Stat` in a tile:
|
|
139
|
+
|
|
140
|
+
```jsx
|
|
141
|
+
<Card>
|
|
142
|
+
<Stat label="MRR" value="$84.2k" delta={6.1} />
|
|
143
|
+
<Sparkline data={mrr} label="MRR, last 12 months" height={28} className="mt-2" />
|
|
144
|
+
</Card>
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
- `data` — numbers (`[12, 15, 14]`) or rows with `value`.
|
|
148
|
+
- `value` — the key when `data` is rows, default `"value"`.
|
|
149
|
+
- `label` — what it shows, e.g. `"MRR, last 12 months"`: a screen reader
|
|
150
|
+
hears it with the first, last, low and high values. Always set it.
|
|
151
|
+
- `format(value)` — for those words.
|
|
152
|
+
- `tone` — default `"chart-1"`.
|
|
153
|
+
- `area` — the faded fill under the line, default `true`.
|
|
154
|
+
- `dot` — a dot on the latest value, default `true`.
|
|
155
|
+
- `height` — default `36`. The width is the container's.
|
|
156
|
+
- `className` — layout. Never colour.
|
|
157
|
+
|
|
158
|
+
### HeatmapChart
|
|
159
|
+
|
|
160
|
+
- `data` — one row per grid row. Empty (or no `columns`) shows the empty
|
|
161
|
+
state.
|
|
162
|
+
- `y` — the key holding each row's name, default `"name"`.
|
|
163
|
+
- `columns` — the cells of a row, in order: `["mon", "tue"]` (labels made
|
|
164
|
+
from the keys) or `[{ key: "mon", label: "Mon" }, …]`.
|
|
165
|
+
- `formatY(yValue, row)` — how a row's name reads (default: as written).
|
|
166
|
+
- `tone` — the ramp's colour: `"chart-1"` (default) … `"chart-5"` (or
|
|
167
|
+
`1` … `5`). One colour, light to full: a heatmap is one measure.
|
|
168
|
+
- `min` · `max` — the ends of the ramp. Default: 0 (or the lowest value,
|
|
169
|
+
when negative) and the highest value. Values past them take the end
|
|
170
|
+
shades.
|
|
171
|
+
- `steps` — how many shades, default `5`. Each cell takes the shade its
|
|
172
|
+
value falls in (`scaleStep`), so equal shades mean equal bands.
|
|
173
|
+
- `showValues` — the number on each cell, in `format`; on dark shades it
|
|
174
|
+
is drawn in the background's colour so it stays readable. Default
|
|
175
|
+
`false` (a compact grid of colour).
|
|
176
|
+
- `format(value)` — how a value reads on the cell, in the tooltip, the
|
|
177
|
+
totals and the legend. Default: `1,250` · `48.2K`.
|
|
178
|
+
- `cellShape` — `"square"` (default, rounded) or `"pill"` (short and
|
|
179
|
+
fully round — the contribution grid).
|
|
180
|
+
- `rowTotals` · `colTotals` — a bold Total column at the right, a bold
|
|
181
|
+
Total row at the foot (and the grand total where they meet). Missing
|
|
182
|
+
values count as nothing. Default `false`.
|
|
183
|
+
- `totalLabel` — default `"Total"`.
|
|
184
|
+
- `tooltip` — the kit `Tooltip` on hover or keyboard focus. Default `true`.
|
|
185
|
+
- `formatTooltip(value, row, column)` — its words (a string); `column` is
|
|
186
|
+
`{ key, label }` and `value` is null when the cell has none. Default:
|
|
187
|
+
`"Tue · 9–12: 51"`. The same words name the cell to a screen reader.
|
|
188
|
+
- `legend` — a `ScaleLegend` under the grid, at the right. Default `true`.
|
|
189
|
+
Set it `false` to place your own (in the card's header, say).
|
|
190
|
+
- `legendLabels` — its end words, e.g. `["Less", "More"]`; default the
|
|
191
|
+
numbers at the two ends.
|
|
192
|
+
- `onSelect(row, columnKey, value)` — a click, or Enter or Space on a
|
|
193
|
+
focused cell.
|
|
194
|
+
- `label` · `description` — as above; the description defaults to the
|
|
195
|
+
size, the range and the highest cell.
|
|
196
|
+
- `yLabel` — the row names' heading for a screen reader (default: the key,
|
|
197
|
+
humanised).
|
|
198
|
+
- `emptyLabel` · `emptyBody` · `className` — as above.
|
|
199
|
+
|
|
200
|
+
The grid is a table: a screen reader reads each cell with its row and
|
|
201
|
+
column. Tab lands on one cell; the arrow keys move, Home and End go to the
|
|
202
|
+
row's ends (with Ctrl or ⌘, the grid's). A grid wider than its box
|
|
203
|
+
scrolls sideways inside it, and the row names stay at the left — on the
|
|
204
|
+
card's background, so put the heatmap in a `Card`.
|
|
205
|
+
|
|
206
|
+
### ScaleLegend
|
|
207
|
+
|
|
208
|
+
The heatmap's key, for a legend placed yourself: `Less ▪▪▪▪▪ More`.
|
|
209
|
+
|
|
210
|
+
- `min` · `max` — the ends, default `0` and `1`.
|
|
211
|
+
- `steps` — the shades, default `5` (match the chart's).
|
|
212
|
+
- `labels` — `["Less", "More"]`, or leave it out for the numbers at the
|
|
213
|
+
ends, in `format`.
|
|
214
|
+
- `tone` · `format` — as the chart's.
|
|
215
|
+
- `shape` — `"square"` (default) or `"pill"`, as the chart's cells.
|
|
216
|
+
- `label` — what a screen reader hears it called, default `"Scale"`.
|
|
217
|
+
|
|
218
|
+
### scaleStep · scaleShade
|
|
219
|
+
|
|
220
|
+
The ramp itself, for cells a block draws on its own.
|
|
221
|
+
|
|
222
|
+
- `scaleStep(value, min, max, steps = 5)` → which shade a value falls in:
|
|
223
|
+
`0` … `steps − 1`, or `null` for a missing value.
|
|
224
|
+
- `scaleShade(value, { min, max, steps, tone })` → `{ step, style,
|
|
225
|
+
className }`: put `style` (the fill) and `className` (the text colour
|
|
226
|
+
that reads on it) on your element.
|
|
227
|
+
|
|
228
|
+
### ChartLegend
|
|
229
|
+
|
|
230
|
+
The key the charts draw, for a legend of your own (several sparklines
|
|
231
|
+
sharing one key, say).
|
|
232
|
+
|
|
233
|
+
- `items` — `[{ key, label, tone?, value? }]`; `value` is a muted note
|
|
234
|
+
after the label.
|
|
235
|
+
- `hidden` — a `Set` (or array) of keys shown as off.
|
|
236
|
+
- `onToggle(key)` — makes each entry a toggle; without it the legend is a
|
|
237
|
+
plain list.
|
|
238
|
+
- `label` — what it is called to a screen reader, default `"Legend"`.
|
|
239
|
+
|
|
240
|
+
## Example
|
|
241
|
+
|
|
242
|
+
```jsx
|
|
243
|
+
// surfaces/sales.jsx — server: load, hand over
|
|
244
|
+
import { loadRows } from "../lib/data";
|
|
245
|
+
import SalesCharts from "../components/SalesCharts";
|
|
246
|
+
|
|
247
|
+
export default async function SalesSurface() {
|
|
248
|
+
const { rows: months, error } = await loadRows({ source: "public.revenue_by_month", orderBy: "month asc" });
|
|
249
|
+
const { rows: stages } = await loadRows({ source: "public.deals_by_stage", orderBy: "position asc" });
|
|
250
|
+
const { rows: visits } = await loadRows({ source: "public.visits_by_slot", orderBy: "position asc" });
|
|
251
|
+
return <SalesCharts months={months} stages={stages} visits={visits} error={error} />;
|
|
252
|
+
}
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
```jsx
|
|
256
|
+
// components/SalesCharts.jsx — client: the cards and the charts
|
|
257
|
+
"use client";
|
|
258
|
+
import { Card, Notice } from "./ui";
|
|
259
|
+
import { AreaChart, BarChart, HeatmapChart, Sparkline } from "./blocks/chart";
|
|
260
|
+
|
|
261
|
+
const usd = new Intl.NumberFormat("en-US", { style: "currency", currency: "USD", maximumFractionDigits: 0 });
|
|
262
|
+
const usdShort = new Intl.NumberFormat("en-US", { style: "currency", currency: "USD", notation: "compact" });
|
|
263
|
+
|
|
264
|
+
export default function SalesCharts({ months, stages, visits, error }) {
|
|
265
|
+
return (
|
|
266
|
+
<div className="grid gap-4">
|
|
267
|
+
{error ? <Notice tone="danger">{error}</Notice> : null}
|
|
268
|
+
<Card title="MRR">
|
|
269
|
+
<Sparkline data={months} value="mrr" label="MRR, last 12 months" format={(v) => usd.format(v)} />
|
|
270
|
+
</Card>
|
|
271
|
+
<Card title="Revenue by month">
|
|
272
|
+
<AreaChart
|
|
273
|
+
data={months}
|
|
274
|
+
x="month"
|
|
275
|
+
series={[{ key: "new_biz", label: "New business" }, { key: "expansion", label: "Expansion" }]}
|
|
276
|
+
stacked
|
|
277
|
+
format={(v) => usd.format(v)}
|
|
278
|
+
formatAxis={(v) => usdShort.format(v)}
|
|
279
|
+
label="Revenue by month"
|
|
280
|
+
/>
|
|
281
|
+
</Card>
|
|
282
|
+
<Card title="Deals by stage">
|
|
283
|
+
<BarChart data={stages} x="stage" series={[{ key: "deals", label: "Deals" }]} orientation="horizontal" label="Deals by stage" />
|
|
284
|
+
</Card>
|
|
285
|
+
<Card title="Site visits by time of day">
|
|
286
|
+
<HeatmapChart
|
|
287
|
+
data={visits}
|
|
288
|
+
y="slot"
|
|
289
|
+
columns={[{ key: "mon", label: "Mon" }, { key: "tue", label: "Tue" }, { key: "wed", label: "Wed" }]}
|
|
290
|
+
showValues
|
|
291
|
+
rowTotals
|
|
292
|
+
colTotals
|
|
293
|
+
formatTooltip={(v, row, col) => `${col.label} ${row.slot}: ${v ?? 0} visits`}
|
|
294
|
+
label="Site visits by weekday and time slot"
|
|
295
|
+
/>
|
|
296
|
+
</Card>
|
|
297
|
+
</div>
|
|
298
|
+
);
|
|
299
|
+
}
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
## What it will not do
|
|
303
|
+
|
|
304
|
+
- Sort, group or sum: the rows come shaped. Totals by month or by stage
|
|
305
|
+
are a query (a view, or `loadRows` over one).
|
|
306
|
+
- A time scale: x is a list of labels, evenly spaced, in row order. Give
|
|
307
|
+
every period a row (a month with no sales is a row with 0).
|
|
308
|
+
- Two value axes, scatter, radar, maps, zoom or brushing.
|
|
309
|
+
- A colour outside the theme: series take the chart tones and the theme's
|
|
310
|
+
status tones only. Colour by value is the heatmap's alone, on one chart
|
|
311
|
+
tone.
|
|
312
|
+
- Draw its own title: put it in a `Card`.
|
|
313
|
+
|
|
314
|
+
A chart it cannot be is your own component in `components/`, built from
|
|
315
|
+
the kit — not an edit to this block. Its files are fixed: `npm run check`
|
|
316
|
+
refuses a change, and `makersclaw add chart` restores them.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "chart",
|
|
3
|
+
"title": "Chart",
|
|
4
|
+
"description": "Line, area (stacked), bar (grouped or stacked, columns or bars, value labels at the ends, a track behind), a muted or dashed series for a previous period to compare against, pie and donut charts, sparklines and heatmaps (a grid shaded by value, with a scale legend), drawn in SVG (the heatmap as an HTML table) with the workspace's chart colours: round ticks, gridlines, a tooltip and crosshair under the pointer or the arrow keys, a legend that hides a series, and a data table for screen readers.",
|
|
5
|
+
"useWhen": "Numbers the founder should see as a shape: revenue by month, deals by stage, pipeline by source, a KPI's trend. Not for a single figure with no history (a stat), exact lookups (a table), or records on a timeline (a calendar).",
|
|
6
|
+
"tags": ["chart", "graph", "line", "area", "bar", "pie", "donut", "sparkline", "analytics", "dashboard", "kpi", "trend", "comparison", "previous period", "metrics", "report", "heatmap", "grid", "scale"],
|
|
7
|
+
"exports": ["LineChart", "AreaChart", "BarChart", "PieChart", "Sparkline", "ChartLegend", "HeatmapChart", "ScaleLegend", "scaleStep", "scaleShade"],
|
|
8
|
+
"files": ["index.js", "core.jsx", "cartesian.jsx", "pie.jsx", "sparkline.jsx", "heatmap.jsx"],
|
|
9
|
+
"requires": []
|
|
10
|
+
}
|