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,525 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// RecordForm in each of its shapes — the gallery's and the smoke test's
|
|
4
|
+
// surface. Not installed into apps. Saves are pretend: pick whether they
|
|
5
|
+
// succeed, fail, or come back with a field refused.
|
|
6
|
+
import { useState } from "react";
|
|
7
|
+
import { Button, Field, Item, Select } from "../components/ui";
|
|
8
|
+
import { RecordForm } from "../components/blocks/record-form";
|
|
9
|
+
|
|
10
|
+
const wait = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
11
|
+
|
|
12
|
+
const PROFESSIONS = [
|
|
13
|
+
{ value: "design", label: "Product designer" },
|
|
14
|
+
{ value: "frontend", label: "Frontend engineer" },
|
|
15
|
+
{ value: "backend", label: "Backend engineer" },
|
|
16
|
+
{ value: "pm", label: "Product manager" },
|
|
17
|
+
{ value: "data", label: "Data analyst" },
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
const LANGUAGES = ["English", "German", "French", "Spanish", "Portuguese", "Italian", "Dutch", "Japanese", "Hindi"].map((l) => ({
|
|
21
|
+
value: l.toLowerCase(),
|
|
22
|
+
label: l,
|
|
23
|
+
}));
|
|
24
|
+
|
|
25
|
+
const VARIANTS = {
|
|
26
|
+
sections: {
|
|
27
|
+
label: "Profile, in sections",
|
|
28
|
+
taken: "email",
|
|
29
|
+
props: {
|
|
30
|
+
title: "Personal details",
|
|
31
|
+
description: "What your teammates see on your profile and in mentions.",
|
|
32
|
+
values: {
|
|
33
|
+
firstName: "Priya",
|
|
34
|
+
lastName: "Raman",
|
|
35
|
+
gender: "female",
|
|
36
|
+
birthDate: "1991-04-18",
|
|
37
|
+
profession: "design",
|
|
38
|
+
email: "priya@larkspur.io",
|
|
39
|
+
confirmEmail: "priya@larkspur.io",
|
|
40
|
+
phone: "+44 20 7946 0321",
|
|
41
|
+
location: "Leeds, United Kingdom",
|
|
42
|
+
language: "english",
|
|
43
|
+
callFrom: "10:00",
|
|
44
|
+
},
|
|
45
|
+
sections: [
|
|
46
|
+
{
|
|
47
|
+
title: "Basic details",
|
|
48
|
+
fields: [
|
|
49
|
+
{ name: "firstName", label: "First name", required: true, autoComplete: "given-name" },
|
|
50
|
+
{ name: "lastName", label: "Last name", required: true, autoComplete: "family-name" },
|
|
51
|
+
{
|
|
52
|
+
name: "gender",
|
|
53
|
+
label: "Gender",
|
|
54
|
+
type: "select",
|
|
55
|
+
options: [
|
|
56
|
+
{ value: "female", label: "Female" },
|
|
57
|
+
{ value: "male", label: "Male" },
|
|
58
|
+
{ value: "other", label: "Another gender" },
|
|
59
|
+
{ value: "unsaid", label: "Rather not say" },
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
{ name: "birthDate", label: "Birth date", type: "date", captionLayout: "dropdown", max: "2010-12-31" },
|
|
63
|
+
{ name: "profession", label: "Profession", type: "select", options: PROFESSIONS },
|
|
64
|
+
],
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
title: "Contact",
|
|
68
|
+
description: "Only people in your workspace can see these.",
|
|
69
|
+
fields: [
|
|
70
|
+
{ name: "email", label: "Email", type: "email", required: true, icon: "mail", autoComplete: "email" },
|
|
71
|
+
{ name: "confirmEmail", label: "Confirm email", type: "email", required: true, matches: "email", matchMessage: "The two emails differ." },
|
|
72
|
+
{ name: "phone", label: "Phone", type: "tel", icon: "phone", autoComplete: "tel" },
|
|
73
|
+
{ name: "location", label: "Location", icon: "map", placeholder: "City, country" },
|
|
74
|
+
],
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
title: "Preferences",
|
|
78
|
+
fields: [
|
|
79
|
+
{ name: "language", label: "Preferred language", type: "combobox", options: LANGUAGES, placeholder: "Choose a language" },
|
|
80
|
+
{ name: "callFrom", label: "Best time to call", type: "time", help: "In your own time zone." },
|
|
81
|
+
],
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
product: {
|
|
87
|
+
label: "Product, in a card",
|
|
88
|
+
taken: "name",
|
|
89
|
+
props: {
|
|
90
|
+
title: "Edit product",
|
|
91
|
+
description: "Price, category and details for the storefront.",
|
|
92
|
+
values: { name: "Waxed canvas field jacket", brand: "Northbound", price: "189", category: "outerwear", details: "Dry wax finish, corduroy collar, two bellow pockets. Re-wax once a season." },
|
|
93
|
+
fields: [
|
|
94
|
+
{ name: "name", label: "Product name", required: true, placeholder: "e.g. Merino crew neck" },
|
|
95
|
+
{ name: "brand", label: "Brand", placeholder: "e.g. Northbound" },
|
|
96
|
+
{ name: "price", label: "Price", type: "number", prefix: "$", min: 0, step: "0.01", required: true },
|
|
97
|
+
{
|
|
98
|
+
name: "category",
|
|
99
|
+
label: "Category",
|
|
100
|
+
type: "select",
|
|
101
|
+
required: true,
|
|
102
|
+
placeholder: "Choose a category",
|
|
103
|
+
options: [
|
|
104
|
+
{ value: "outerwear", label: "Outerwear" },
|
|
105
|
+
{ value: "tops", label: "Tops" },
|
|
106
|
+
{ value: "bottoms", label: "Bottoms" },
|
|
107
|
+
{ value: "footwear", label: "Footwear" },
|
|
108
|
+
{ value: "accessories", label: "Accessories" },
|
|
109
|
+
],
|
|
110
|
+
},
|
|
111
|
+
{ name: "details", label: "Details", type: "textarea", placeholder: "Material, fit, care…", maxLength: 600 },
|
|
112
|
+
],
|
|
113
|
+
deleteLabel: "Remove product",
|
|
114
|
+
confirmDelete: { title: "Remove this product?", body: "It leaves the storefront and every open cart." },
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
compact: {
|
|
118
|
+
label: "Account, compact",
|
|
119
|
+
taken: "username",
|
|
120
|
+
props: {
|
|
121
|
+
title: "Sign-in details",
|
|
122
|
+
columns: 1,
|
|
123
|
+
values: { username: "tomas.k", email: "tomas@harbourline.co" },
|
|
124
|
+
fields: [
|
|
125
|
+
{ name: "username", label: "Username", required: true, pattern: "[a-z0-9._-]{3,24}", patternMessage: "3–24 lowercase letters, digits, dots or dashes.", autoComplete: "username" },
|
|
126
|
+
{ name: "email", label: "Email", type: "email", required: true, autoComplete: "email" },
|
|
127
|
+
{ name: "password", label: "New password", type: "password", minLength: 10, help: "At least 10 characters. Leave empty to keep the current one." },
|
|
128
|
+
{ name: "confirm", label: "Confirm new password", type: "password", matches: "password", matchMessage: "The passwords differ." },
|
|
129
|
+
],
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
photo: {
|
|
133
|
+
label: "Member, with a photo",
|
|
134
|
+
taken: "email",
|
|
135
|
+
props: {
|
|
136
|
+
title: "Team member",
|
|
137
|
+
description: "Profile, role and what they can change.",
|
|
138
|
+
values: {
|
|
139
|
+
photo: null,
|
|
140
|
+
firstName: "Marco",
|
|
141
|
+
lastName: "Bellini",
|
|
142
|
+
email: "marco@studio-ferro.it",
|
|
143
|
+
role: "manager",
|
|
144
|
+
languages: ["italian", "english"],
|
|
145
|
+
jobTitle: "Store manager",
|
|
146
|
+
accountType: "pro",
|
|
147
|
+
permission: "operational",
|
|
148
|
+
verified: "Verified",
|
|
149
|
+
},
|
|
150
|
+
fields: [
|
|
151
|
+
{ name: "photo", label: "Profile photo", type: "photo", help: "PNG or JPG, square works best.", nameFrom: (v) => `${v.firstName ?? ""} ${v.lastName ?? ""}` },
|
|
152
|
+
{ name: "firstName", label: "First name", required: true },
|
|
153
|
+
{ name: "lastName", label: "Last name", required: true },
|
|
154
|
+
{ name: "email", label: "Contact email", type: "email", required: true },
|
|
155
|
+
{
|
|
156
|
+
name: "role",
|
|
157
|
+
label: "Role",
|
|
158
|
+
type: "select",
|
|
159
|
+
options: [
|
|
160
|
+
{ value: "stylist", label: "Stylist" },
|
|
161
|
+
{ value: "manager", label: "Store manager" },
|
|
162
|
+
{ value: "lead", label: "Creative lead" },
|
|
163
|
+
],
|
|
164
|
+
},
|
|
165
|
+
{ name: "languages", label: "Languages", type: "tags", options: LANGUAGES, placeholder: "Add a language" },
|
|
166
|
+
{ name: "jobTitle", label: "Job title" },
|
|
167
|
+
{
|
|
168
|
+
name: "accountType",
|
|
169
|
+
label: "Account type",
|
|
170
|
+
type: "select",
|
|
171
|
+
options: [
|
|
172
|
+
{ value: "basic", label: "Basic" },
|
|
173
|
+
{ value: "pro", label: "Pro" },
|
|
174
|
+
{ value: "exec", label: "Executive" },
|
|
175
|
+
],
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
name: "permission",
|
|
179
|
+
label: "Permission level",
|
|
180
|
+
type: "select",
|
|
181
|
+
options: [
|
|
182
|
+
{ value: "admin", label: "Admin" },
|
|
183
|
+
{ value: "operational", label: "Operational" },
|
|
184
|
+
{ value: "viewer", label: "Viewer" },
|
|
185
|
+
],
|
|
186
|
+
},
|
|
187
|
+
{ name: "verified", label: "Email status", type: "static" },
|
|
188
|
+
],
|
|
189
|
+
deleteLabel: "Delete member",
|
|
190
|
+
confirmDelete: { title: "Delete Marco Bellini?", body: "Their sign-in stops working at once.", requireText: "marco" },
|
|
191
|
+
},
|
|
192
|
+
},
|
|
193
|
+
dialog: {
|
|
194
|
+
label: "Profile, in a dialog",
|
|
195
|
+
taken: "name",
|
|
196
|
+
dialog: "Edit profile",
|
|
197
|
+
props: {
|
|
198
|
+
container: "dialog",
|
|
199
|
+
title: "Edit profile",
|
|
200
|
+
description: "Update how you appear to your team.",
|
|
201
|
+
submitLabel: "Update profile",
|
|
202
|
+
values: { name: "Ines Carvalho", profession: "frontend", stack: ["react", "tailwind"], notify: "email" },
|
|
203
|
+
fields: [
|
|
204
|
+
{ name: "name", label: "Name", required: true },
|
|
205
|
+
{ name: "profession", label: "I am a", type: "select", options: PROFESSIONS },
|
|
206
|
+
{
|
|
207
|
+
name: "stack",
|
|
208
|
+
label: "Technologies",
|
|
209
|
+
description: "Pick the ones you work in.",
|
|
210
|
+
type: "checkboxes",
|
|
211
|
+
orientation: "horizontal",
|
|
212
|
+
options: [
|
|
213
|
+
{ value: "react", label: "React" },
|
|
214
|
+
{ value: "next", label: "Next.js" },
|
|
215
|
+
{ value: "tailwind", label: "Tailwind CSS" },
|
|
216
|
+
{ value: "postgres", label: "Postgres" },
|
|
217
|
+
],
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
name: "notify",
|
|
221
|
+
label: "Where to reach you",
|
|
222
|
+
type: "radio",
|
|
223
|
+
orientation: "horizontal",
|
|
224
|
+
options: [
|
|
225
|
+
{ value: "email", label: "Email" },
|
|
226
|
+
{ value: "sms", label: "Text message" },
|
|
227
|
+
{ value: "push", label: "Push" },
|
|
228
|
+
],
|
|
229
|
+
},
|
|
230
|
+
],
|
|
231
|
+
},
|
|
232
|
+
},
|
|
233
|
+
images: {
|
|
234
|
+
label: "Product, in a dialog with images",
|
|
235
|
+
taken: "name",
|
|
236
|
+
dialog: "Edit product",
|
|
237
|
+
props: {
|
|
238
|
+
container: "dialog",
|
|
239
|
+
title: "Edit product",
|
|
240
|
+
description: "Photos, price and the words shoppers read.",
|
|
241
|
+
submitLabel: "Update product",
|
|
242
|
+
values: {
|
|
243
|
+
images: [],
|
|
244
|
+
name: "Ceramic pour-over set",
|
|
245
|
+
category: "kitchen",
|
|
246
|
+
price: "64",
|
|
247
|
+
rating: 4,
|
|
248
|
+
description: "Hand-thrown stoneware dripper with a matching carafe.",
|
|
249
|
+
tags: ["coffee", "gift"],
|
|
250
|
+
},
|
|
251
|
+
fields: [
|
|
252
|
+
{ name: "images", label: "Photos", type: "images", maxItems: 4, help: "Up to four. The first one leads." },
|
|
253
|
+
{ name: "name", label: "Product name", required: true },
|
|
254
|
+
{
|
|
255
|
+
name: "category",
|
|
256
|
+
label: "Category",
|
|
257
|
+
type: "select",
|
|
258
|
+
options: [
|
|
259
|
+
{ value: "kitchen", label: "Kitchen" },
|
|
260
|
+
{ value: "home", label: "Home" },
|
|
261
|
+
{ value: "garden", label: "Garden" },
|
|
262
|
+
],
|
|
263
|
+
},
|
|
264
|
+
{ name: "price", label: "Price", type: "number", prefix: "$", min: 0, required: true },
|
|
265
|
+
{ name: "rating", label: "Quality grade", type: "rating", help: "Shown on the product page." },
|
|
266
|
+
{ name: "description", label: "Description", type: "textarea", rows: 3 },
|
|
267
|
+
{
|
|
268
|
+
name: "tags",
|
|
269
|
+
label: "Tags",
|
|
270
|
+
type: "tags",
|
|
271
|
+
maxItems: 10,
|
|
272
|
+
options: ["coffee", "tea", "gift", "handmade", "sale"].map((t) => ({ value: t, label: t })),
|
|
273
|
+
help: "Up to ten.",
|
|
274
|
+
},
|
|
275
|
+
],
|
|
276
|
+
},
|
|
277
|
+
},
|
|
278
|
+
split: {
|
|
279
|
+
label: "Workspace, split sections",
|
|
280
|
+
taken: "workspace",
|
|
281
|
+
props: {
|
|
282
|
+
container: "page",
|
|
283
|
+
layout: "split",
|
|
284
|
+
title: "Workspace settings",
|
|
285
|
+
description: "Your details, the workspace's, and what you are told about.",
|
|
286
|
+
values: { firstName: "Hana", lastName: "Okafor", email: "hana@quillhouse.com", role: "Operations lead", workspace: "Quill House", visibility: "private", about: "", digest: ["weekly"], mentions: true },
|
|
287
|
+
sections: [
|
|
288
|
+
{
|
|
289
|
+
title: "Personal information",
|
|
290
|
+
description: "Used on invoices and in the members list.",
|
|
291
|
+
fields: [
|
|
292
|
+
{ name: "firstName", label: "First name", required: true },
|
|
293
|
+
{ name: "lastName", label: "Last name", required: true },
|
|
294
|
+
{ name: "email", label: "Email", type: "email", required: true, width: "full" },
|
|
295
|
+
{ name: "role", label: "Role", disabled: true, help: "Only an owner can change roles." },
|
|
296
|
+
],
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
title: "Workspace",
|
|
300
|
+
description: "How the workspace is named and who can find it.",
|
|
301
|
+
fields: [
|
|
302
|
+
{ name: "workspace", label: "Workspace name", required: true },
|
|
303
|
+
{
|
|
304
|
+
name: "visibility",
|
|
305
|
+
label: "Visibility",
|
|
306
|
+
type: "select",
|
|
307
|
+
options: [
|
|
308
|
+
{ value: "private", label: "Private" },
|
|
309
|
+
{ value: "public", label: "Public" },
|
|
310
|
+
],
|
|
311
|
+
},
|
|
312
|
+
{ name: "about", label: "Description", type: "textarea", help: "Not shown outside the workspace." },
|
|
313
|
+
],
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
title: "Notifications",
|
|
317
|
+
description: "Email only; push is set on each device.",
|
|
318
|
+
fields: [
|
|
319
|
+
{
|
|
320
|
+
name: "digest",
|
|
321
|
+
label: "Digests",
|
|
322
|
+
type: "checkboxes",
|
|
323
|
+
options: [
|
|
324
|
+
{ value: "daily", label: "Daily summary", description: "What changed in the last day, at 8:00." },
|
|
325
|
+
{ value: "weekly", label: "Weekly report", description: "Numbers for the week, on Monday." },
|
|
326
|
+
],
|
|
327
|
+
},
|
|
328
|
+
{ name: "mentions", label: "Mentions", type: "switch", description: "Email me when someone mentions me." },
|
|
329
|
+
],
|
|
330
|
+
},
|
|
331
|
+
],
|
|
332
|
+
},
|
|
333
|
+
},
|
|
334
|
+
cards: {
|
|
335
|
+
label: "Early access, choice cards",
|
|
336
|
+
taken: "email",
|
|
337
|
+
props: {
|
|
338
|
+
title: "Apply for early access",
|
|
339
|
+
description: "Tell us about your team; we answer within two working days.",
|
|
340
|
+
requireChanges: false,
|
|
341
|
+
submitLabel: "Apply",
|
|
342
|
+
values: { plan: "starter" },
|
|
343
|
+
sections: [
|
|
344
|
+
{
|
|
345
|
+
fields: [
|
|
346
|
+
{ name: "firstName", label: "First name", required: true, autoComplete: "given-name" },
|
|
347
|
+
{ name: "lastName", label: "Last name", autoComplete: "family-name" },
|
|
348
|
+
{ name: "email", label: "Work email", type: "email", required: true, autoComplete: "email" },
|
|
349
|
+
{ name: "company", label: "Company", autoComplete: "organization" },
|
|
350
|
+
{ name: "size", label: "Company size", type: "select", placeholder: "Choose a size", options: ["1–9", "10–49", "50–249", "250+"] },
|
|
351
|
+
],
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
title: "Package",
|
|
355
|
+
fields: [
|
|
356
|
+
{
|
|
357
|
+
name: "plan",
|
|
358
|
+
label: "Choose a package",
|
|
359
|
+
type: "choice-cards",
|
|
360
|
+
required: true,
|
|
361
|
+
options: [
|
|
362
|
+
{ value: "starter", label: "Starter", description: "Up to 10,000 requests a day.", price: "Free" },
|
|
363
|
+
{ value: "growth", label: "Growth", description: "Up to 500,000 requests a day.", price: "$900", per: "/mo" },
|
|
364
|
+
{ value: "custom", label: "Custom", description: "Sized to what you run.", price: "Let's talk" },
|
|
365
|
+
],
|
|
366
|
+
},
|
|
367
|
+
{ name: "terms", label: "I agree to the early-access terms", type: "checkbox", required: true },
|
|
368
|
+
],
|
|
369
|
+
},
|
|
370
|
+
],
|
|
371
|
+
},
|
|
372
|
+
},
|
|
373
|
+
plans: {
|
|
374
|
+
label: "New workspace, priced plans",
|
|
375
|
+
taken: "workspace",
|
|
376
|
+
props: {
|
|
377
|
+
title: "Create a workspace",
|
|
378
|
+
values: { org: "fenwick", workspace: "", region: "fra", plan: "team" },
|
|
379
|
+
requireChanges: false,
|
|
380
|
+
submitLabel: "Create workspace",
|
|
381
|
+
sections: [
|
|
382
|
+
{
|
|
383
|
+
fields: [
|
|
384
|
+
{
|
|
385
|
+
name: "org",
|
|
386
|
+
label: "Organisation",
|
|
387
|
+
type: "select",
|
|
388
|
+
options: [
|
|
389
|
+
{ value: "fenwick", label: "Fenwick & Doyle" },
|
|
390
|
+
{ value: "tidal", label: "Tidal Labs" },
|
|
391
|
+
],
|
|
392
|
+
},
|
|
393
|
+
{ name: "workspace", label: "Workspace name", required: true, minLength: 3 },
|
|
394
|
+
{
|
|
395
|
+
name: "region",
|
|
396
|
+
label: "Region",
|
|
397
|
+
type: "combobox",
|
|
398
|
+
required: true,
|
|
399
|
+
width: "full",
|
|
400
|
+
options: [
|
|
401
|
+
{ value: "fra", label: "Frankfurt, Germany", description: "eu-central" },
|
|
402
|
+
{ value: "lhr", label: "London, United Kingdom", description: "eu-west" },
|
|
403
|
+
{ value: "iad", label: "Washington, D.C., USA", description: "us-east" },
|
|
404
|
+
{ value: "sfo", label: "San Francisco, USA", description: "us-west" },
|
|
405
|
+
{ value: "sin", label: "Singapore", description: "ap-southeast" },
|
|
406
|
+
],
|
|
407
|
+
},
|
|
408
|
+
],
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
title: "Plan",
|
|
412
|
+
fields: [
|
|
413
|
+
{
|
|
414
|
+
name: "plan",
|
|
415
|
+
label: "Plan",
|
|
416
|
+
type: "choice-cards",
|
|
417
|
+
options: [
|
|
418
|
+
{ value: "solo", label: "Solo", description: "3 projects, 5 GB.", price: "$15", per: "/mo" },
|
|
419
|
+
{ value: "team", label: "Team", description: "Unlimited projects, 50 GB.", price: "$49", per: "/mo", badge: "Popular" },
|
|
420
|
+
{ value: "agency", label: "Agency", description: "Client portals, 250 GB.", price: "$99", per: "/mo" },
|
|
421
|
+
],
|
|
422
|
+
},
|
|
423
|
+
],
|
|
424
|
+
},
|
|
425
|
+
],
|
|
426
|
+
},
|
|
427
|
+
},
|
|
428
|
+
};
|
|
429
|
+
|
|
430
|
+
export default function RecordFormDemo() {
|
|
431
|
+
const [variant, setVariant] = useState("sections");
|
|
432
|
+
const [outcome, setOutcome] = useState("ok");
|
|
433
|
+
const [state, setState] = useState("ready");
|
|
434
|
+
const [open, setOpen] = useState(false);
|
|
435
|
+
const [saved, setSaved] = useState({});
|
|
436
|
+
const v = VARIANTS[variant];
|
|
437
|
+
const values = saved[variant] ?? v.props.values;
|
|
438
|
+
|
|
439
|
+
async function onSave(next) {
|
|
440
|
+
await wait(700);
|
|
441
|
+
if (outcome === "fail") return { ok: false, error: "The server did not answer. Your changes are still here — try again." };
|
|
442
|
+
if (outcome === "fields") return { ok: false, errors: { [v.taken]: "That one is already taken." } };
|
|
443
|
+
setSaved((s) => ({ ...s, [variant]: next }));
|
|
444
|
+
return { ok: true };
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
async function onDelete() {
|
|
448
|
+
await wait(700);
|
|
449
|
+
return outcome === "ok" ? { ok: true } : { ok: false, error: "It could not be removed just now." };
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
const props = {
|
|
453
|
+
...v.props,
|
|
454
|
+
values,
|
|
455
|
+
onSave,
|
|
456
|
+
onDelete: v.props.deleteLabel ? onDelete : undefined,
|
|
457
|
+
loading: state === "loading",
|
|
458
|
+
error: state === "error" ? "The record could not be read." : undefined,
|
|
459
|
+
onRetry: () => setState("ready"),
|
|
460
|
+
sections: state === "empty" ? [] : v.props.sections,
|
|
461
|
+
fields: state === "empty" ? [] : v.props.fields,
|
|
462
|
+
};
|
|
463
|
+
|
|
464
|
+
return (
|
|
465
|
+
<div className="grid max-w-3xl gap-4">
|
|
466
|
+
<div className="grid gap-3 sm:grid-cols-3">
|
|
467
|
+
<Field id="rf-variant" label="Shape">
|
|
468
|
+
<Select
|
|
469
|
+
id="rf-variant"
|
|
470
|
+
value={variant}
|
|
471
|
+
onChange={(e) => {
|
|
472
|
+
setVariant(e.target.value);
|
|
473
|
+
setOpen(false);
|
|
474
|
+
}}
|
|
475
|
+
options={Object.entries(VARIANTS).map(([value, x]) => ({ value, label: x.label }))}
|
|
476
|
+
/>
|
|
477
|
+
</Field>
|
|
478
|
+
<Field id="rf-outcome" label="Saving">
|
|
479
|
+
<Select
|
|
480
|
+
id="rf-outcome"
|
|
481
|
+
value={outcome}
|
|
482
|
+
onChange={(e) => setOutcome(e.target.value)}
|
|
483
|
+
options={[
|
|
484
|
+
{ value: "ok", label: "Succeeds" },
|
|
485
|
+
{ value: "fields", label: "A field is refused" },
|
|
486
|
+
{ value: "fail", label: "Fails" },
|
|
487
|
+
]}
|
|
488
|
+
/>
|
|
489
|
+
</Field>
|
|
490
|
+
<Field id="rf-state" label="State">
|
|
491
|
+
<Select
|
|
492
|
+
id="rf-state"
|
|
493
|
+
value={state}
|
|
494
|
+
onChange={(e) => setState(e.target.value)}
|
|
495
|
+
options={[
|
|
496
|
+
{ value: "ready", label: "Loaded" },
|
|
497
|
+
{ value: "loading", label: "Loading" },
|
|
498
|
+
{ value: "error", label: "Load failed" },
|
|
499
|
+
{ value: "empty", label: "No fields" },
|
|
500
|
+
]}
|
|
501
|
+
/>
|
|
502
|
+
</Field>
|
|
503
|
+
</div>
|
|
504
|
+
|
|
505
|
+
{v.dialog ? (
|
|
506
|
+
<div className="grid gap-3">
|
|
507
|
+
<Item
|
|
508
|
+
variant="outline"
|
|
509
|
+
icon={variant === "images" ? "package" : "user"}
|
|
510
|
+
title={values.name}
|
|
511
|
+
description={variant === "images" ? `$${values.price} · ${values.category}` : PROFESSIONS.find((p) => p.value === values.profession)?.label}
|
|
512
|
+
actions={
|
|
513
|
+
<Button icon="pencil" size="sm" onClick={() => setOpen(true)}>
|
|
514
|
+
{v.dialog}
|
|
515
|
+
</Button>
|
|
516
|
+
}
|
|
517
|
+
/>
|
|
518
|
+
<RecordForm key={variant} {...props} open={open} onClose={() => setOpen(false)} />
|
|
519
|
+
</div>
|
|
520
|
+
) : (
|
|
521
|
+
<RecordForm key={variant} {...props} onCancel={variant === "product" ? () => {} : undefined} />
|
|
522
|
+
)}
|
|
523
|
+
</div>
|
|
524
|
+
);
|
|
525
|
+
}
|