@monkey-mini-app/dsh-mini-app 0.1.0 → 0.1.4
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/README.md +59 -0
- package/assets/apps-list.png +0 -0
- package/assets/complex-demo-app.png +0 -0
- package/assets/demo-app.png +0 -0
- package/assets/home.png +0 -0
- package/assets/sidebar-mode.png +0 -0
- package/lib/client.js +2024 -783
- package/lib/index.d.ts +5 -2
- package/lib/index.js +29 -16
- package/package.json +12 -10
- package/skills/monkey-mini-app/SKILL.md +182 -106
- package/skills/monkey-mini-app/references/catalog.md +236 -99
- package/skills/monkey-mini-app/references/contracts/accordion.md +30 -0
- package/skills/monkey-mini-app/references/contracts/activity-feed.md +12 -2
- package/skills/monkey-mini-app/references/contracts/alert-dialog.md +38 -0
- package/skills/monkey-mini-app/references/contracts/alert.md +38 -0
- package/skills/monkey-mini-app/references/contracts/app-shell.md +2 -2
- package/skills/monkey-mini-app/references/contracts/aspect-ratio.md +25 -0
- package/skills/monkey-mini-app/references/contracts/attachment-gallery.md +12 -2
- package/skills/monkey-mini-app/references/contracts/attachment.md +35 -0
- package/skills/monkey-mini-app/references/contracts/autocomplete.md +12 -2
- package/skills/monkey-mini-app/references/contracts/avatar.md +24 -0
- package/skills/monkey-mini-app/references/contracts/badge.md +26 -0
- package/skills/monkey-mini-app/references/contracts/breadcrumb.md +33 -0
- package/skills/monkey-mini-app/references/contracts/bubble.md +30 -0
- package/skills/monkey-mini-app/references/contracts/button-group.md +36 -0
- package/skills/monkey-mini-app/references/contracts/button.md +26 -0
- package/skills/monkey-mini-app/references/contracts/calendar.md +20 -0
- package/skills/monkey-mini-app/references/contracts/card.md +41 -0
- package/skills/monkey-mini-app/references/contracts/cascader.md +12 -2
- package/skills/monkey-mini-app/references/contracts/chart.md +32 -0
- package/skills/monkey-mini-app/references/contracts/checkbox.md +19 -0
- package/skills/monkey-mini-app/references/contracts/code-block.md +20 -2
- package/skills/monkey-mini-app/references/contracts/code-editor.md +30 -4
- package/skills/monkey-mini-app/references/contracts/collapsible.md +21 -0
- package/skills/monkey-mini-app/references/contracts/color-picker.md +12 -2
- package/skills/monkey-mini-app/references/contracts/combobox.md +34 -0
- package/skills/monkey-mini-app/references/contracts/command.md +41 -0
- package/skills/monkey-mini-app/references/contracts/comment-thread.md +12 -2
- package/skills/monkey-mini-app/references/contracts/commit-graph.md +50 -0
- package/skills/monkey-mini-app/references/contracts/confirm-dialog.md +20 -2
- package/skills/monkey-mini-app/references/contracts/context-menu.md +41 -0
- package/skills/monkey-mini-app/references/contracts/copyable.md +12 -2
- package/skills/monkey-mini-app/references/contracts/currency-input.md +12 -2
- package/skills/monkey-mini-app/references/contracts/dashboard-shell.md +41 -0
- package/skills/monkey-mini-app/references/contracts/data-grid.md +13 -6
- package/skills/monkey-mini-app/references/contracts/date-picker.md +20 -2
- package/skills/monkey-mini-app/references/contracts/date-range-picker.md +10 -2
- package/skills/monkey-mini-app/references/contracts/date-time-picker.md +20 -2
- package/skills/monkey-mini-app/references/contracts/date-time-range-picker.md +20 -2
- package/skills/monkey-mini-app/references/contracts/description-list.md +12 -2
- package/skills/monkey-mini-app/references/contracts/detail-panel.md +10 -2
- package/skills/monkey-mini-app/references/contracts/dialog.md +44 -0
- package/skills/monkey-mini-app/references/contracts/diff-viewer.md +21 -2
- package/skills/monkey-mini-app/references/contracts/donut-chart.md +14 -2
- package/skills/monkey-mini-app/references/contracts/drawer.md +29 -0
- package/skills/monkey-mini-app/references/contracts/dropdown-menu.md +49 -0
- package/skills/monkey-mini-app/references/contracts/duration-input.md +20 -2
- package/skills/monkey-mini-app/references/contracts/empty.md +40 -0
- package/skills/monkey-mini-app/references/contracts/env-badge.md +12 -2
- package/skills/monkey-mini-app/references/contracts/env-table.md +46 -0
- package/skills/monkey-mini-app/references/contracts/event-calendar.md +28 -20
- package/skills/monkey-mini-app/references/contracts/field.md +34 -0
- package/skills/monkey-mini-app/references/contracts/file-dropzone.md +20 -2
- package/skills/monkey-mini-app/references/contracts/file-tree.md +12 -2
- package/skills/monkey-mini-app/references/contracts/filter-bar.md +2 -2
- package/skills/monkey-mini-app/references/contracts/form-sheet.md +51 -0
- package/skills/monkey-mini-app/references/contracts/gantt.md +20 -2
- package/skills/monkey-mini-app/references/contracts/gauge.md +14 -2
- package/skills/monkey-mini-app/references/contracts/hover-card.md +21 -0
- package/skills/monkey-mini-app/references/contracts/input-group.md +24 -0
- package/skills/monkey-mini-app/references/contracts/input.md +33 -0
- package/skills/monkey-mini-app/references/contracts/item.md +36 -0
- package/skills/monkey-mini-app/references/contracts/jira-wiki.md +3 -4
- package/skills/monkey-mini-app/references/contracts/jql-input.md +15 -8
- package/skills/monkey-mini-app/references/contracts/json-viewer.md +20 -2
- package/skills/monkey-mini-app/references/contracts/kanban-issue-panel.md +12 -2
- package/skills/monkey-mini-app/references/contracts/kanban.md +10 -2
- package/skills/monkey-mini-app/references/contracts/kbd.md +20 -0
- package/skills/monkey-mini-app/references/contracts/label.md +33 -0
- package/skills/monkey-mini-app/references/contracts/list-detail.md +46 -0
- package/skills/monkey-mini-app/references/contracts/log-viewer.md +45 -4
- package/skills/monkey-mini-app/references/contracts/markdown-editor.md +20 -2
- package/skills/monkey-mini-app/references/contracts/markdown.md +12 -2
- package/skills/monkey-mini-app/references/contracts/marker.md +30 -0
- package/skills/monkey-mini-app/references/contracts/menubar.md +34 -0
- package/skills/monkey-mini-app/references/contracts/message-scroller.md +24 -0
- package/skills/monkey-mini-app/references/contracts/message.md +24 -0
- package/skills/monkey-mini-app/references/contracts/mini-calendar.md +20 -2
- package/skills/monkey-mini-app/references/contracts/native-select.md +21 -0
- package/skills/monkey-mini-app/references/contracts/navigation-menu.md +27 -0
- package/skills/monkey-mini-app/references/contracts/notification-center.md +12 -2
- package/skills/monkey-mini-app/references/contracts/number-field.md +20 -2
- package/skills/monkey-mini-app/references/contracts/page-header.md +2 -2
- package/skills/monkey-mini-app/references/contracts/pagination.md +33 -0
- package/skills/monkey-mini-app/references/contracts/password-field.md +12 -2
- package/skills/monkey-mini-app/references/contracts/phone-input.md +12 -2
- package/skills/monkey-mini-app/references/contracts/popover.md +32 -0
- package/skills/monkey-mini-app/references/contracts/progress-ring.md +14 -2
- package/skills/monkey-mini-app/references/contracts/progress.md +39 -0
- package/skills/monkey-mini-app/references/contracts/questionnaire.md +33 -0
- package/skills/monkey-mini-app/references/contracts/radar-chart.md +14 -2
- package/skills/monkey-mini-app/references/contracts/radio-group.md +20 -0
- package/skills/monkey-mini-app/references/contracts/rating.md +12 -2
- package/skills/monkey-mini-app/references/contracts/relative-date-picker.md +20 -2
- package/skills/monkey-mini-app/references/contracts/request-inspector.md +12 -2
- package/skills/monkey-mini-app/references/contracts/resizable.md +29 -0
- package/skills/monkey-mini-app/references/contracts/reveal.md +31 -0
- package/skills/monkey-mini-app/references/contracts/rich-text-editor.md +14 -2
- package/skills/monkey-mini-app/references/contracts/run-timeline.md +20 -2
- package/skills/monkey-mini-app/references/contracts/scroll-area.md +20 -0
- package/skills/monkey-mini-app/references/contracts/scrollspy.md +20 -2
- package/skills/monkey-mini-app/references/contracts/search-input.md +12 -2
- package/skills/monkey-mini-app/references/contracts/select.md +36 -0
- package/skills/monkey-mini-app/references/contracts/separator.md +27 -0
- package/skills/monkey-mini-app/references/contracts/settings-split.md +53 -0
- package/skills/monkey-mini-app/references/contracts/severity-chip.md +12 -2
- package/skills/monkey-mini-app/references/contracts/sheet.md +34 -0
- package/skills/monkey-mini-app/references/contracts/sidebar.md +42 -0
- package/skills/monkey-mini-app/references/contracts/skeleton.md +33 -0
- package/skills/monkey-mini-app/references/contracts/slider-range.md +12 -2
- package/skills/monkey-mini-app/references/contracts/slider.md +25 -0
- package/skills/monkey-mini-app/references/contracts/sortable-list.md +20 -2
- package/skills/monkey-mini-app/references/contracts/sparkline.md +13 -2
- package/skills/monkey-mini-app/references/contracts/spinner.md +31 -0
- package/skills/monkey-mini-app/references/contracts/stacked-bar-chart.md +17 -2
- package/skills/monkey-mini-app/references/contracts/stat-card.md +2 -2
- package/skills/monkey-mini-app/references/contracts/status-badge.md +2 -2
- package/skills/monkey-mini-app/references/contracts/stepper-item.md +39 -0
- package/skills/monkey-mini-app/references/contracts/stepper.md +38 -11
- package/skills/monkey-mini-app/references/contracts/switch.md +25 -0
- package/skills/monkey-mini-app/references/contracts/table-page.md +41 -0
- package/skills/monkey-mini-app/references/contracts/table.md +42 -0
- package/skills/monkey-mini-app/references/contracts/tabs.md +31 -0
- package/skills/monkey-mini-app/references/contracts/tag-input.md +12 -2
- package/skills/monkey-mini-app/references/contracts/terminal.md +13 -2
- package/skills/monkey-mini-app/references/contracts/test-step-list.md +12 -2
- package/skills/monkey-mini-app/references/contracts/textarea.md +25 -0
- package/skills/monkey-mini-app/references/contracts/time-picker.md +18 -2
- package/skills/monkey-mini-app/references/contracts/time-range-picker.md +20 -2
- package/skills/monkey-mini-app/references/contracts/time-wheel.md +6 -2
- package/skills/monkey-mini-app/references/contracts/timeline.md +20 -2
- package/skills/monkey-mini-app/references/contracts/timezone-select.md +20 -2
- package/skills/monkey-mini-app/references/contracts/toast.md +39 -0
- package/skills/monkey-mini-app/references/contracts/toggle-group.md +28 -0
- package/skills/monkey-mini-app/references/contracts/toggle.md +26 -0
- package/skills/monkey-mini-app/references/contracts/tooltip.md +30 -0
- package/skills/monkey-mini-app/references/contracts/transfer.md +12 -2
- package/skills/monkey-mini-app/references/contracts/tree-view.md +20 -2
- package/skills/monkey-mini-app/references/contracts/trend-card.md +12 -2
- package/skills/monkey-mini-app/references/contracts/user-picker.md +12 -2
- package/skills/monkey-mini-app/references/contracts/wizard-shell.md +56 -0
- package/skills/monkey-mini-app/references/ctx.md +123 -53
- package/skills/monkey-mini-app/references/eval.md +115 -0
- package/skills/monkey-mini-app/references/examples/alert/alert-01.tsx +17 -0
- package/skills/monkey-mini-app/references/examples/aspect-ratio/aspect-ratio-01.tsx +16 -0
- package/skills/monkey-mini-app/references/examples/attachment/attachment-01.tsx +19 -0
- package/skills/monkey-mini-app/references/examples/breadcrumb/breadcrumb-01.tsx +31 -0
- package/skills/monkey-mini-app/references/examples/bubble/bubble-01.tsx +16 -0
- package/skills/monkey-mini-app/references/examples/button-group/button-group-01.tsx +23 -0
- package/skills/monkey-mini-app/references/examples/card/card-01.tsx +19 -0
- package/skills/monkey-mini-app/references/examples/charts-blocks.md +15 -0
- package/skills/monkey-mini-app/references/examples/code-block/code-block-01.tsx +14 -0
- package/skills/monkey-mini-app/references/examples/code-editor/code-editor-01.tsx +15 -0
- package/skills/monkey-mini-app/references/examples/command/command-01.tsx +30 -0
- package/skills/monkey-mini-app/references/examples/confirm-dialog/confirm-dialog-01.tsx +33 -0
- package/skills/monkey-mini-app/references/examples/context-menu/context-menu-01.tsx +29 -0
- package/skills/monkey-mini-app/references/examples/dashboard-shell/dashboard-shell-01.tsx +78 -0
- package/skills/monkey-mini-app/references/examples/data-grid/data-grid-01.tsx +34 -0
- package/skills/monkey-mini-app/references/examples/data-grid/data-grid-02.tsx +88 -0
- package/skills/monkey-mini-app/references/examples/date-picker/date-picker-01.tsx +14 -0
- package/skills/monkey-mini-app/references/examples/date-range-picker/date-range-picker-01.tsx +14 -0
- package/skills/monkey-mini-app/references/examples/date-time-picker/date-time-picker-01.tsx +16 -0
- package/skills/monkey-mini-app/references/examples/date-time-range-picker/date-time-range-picker-01.tsx +15 -0
- package/skills/monkey-mini-app/references/examples/detail-panel/detail-panel-01.tsx +21 -0
- package/skills/monkey-mini-app/references/examples/dialog/dialog-01.tsx +30 -0
- package/skills/monkey-mini-app/references/examples/diff-viewer/diff-viewer-01.tsx +10 -0
- package/skills/monkey-mini-app/references/examples/dropdown-menu/dropdown-menu-01.tsx +31 -0
- package/skills/monkey-mini-app/references/examples/duration-input/duration-input-01.tsx +20 -0
- package/skills/monkey-mini-app/references/examples/editors.md +11 -0
- package/skills/monkey-mini-app/references/examples/empty/empty-01.tsx +19 -0
- package/skills/monkey-mini-app/references/examples/event-calendar/event-calendar-01.tsx +53 -0
- package/skills/monkey-mini-app/references/examples/file-dropzone/file-dropzone-01.tsx +14 -0
- package/skills/monkey-mini-app/references/examples/form-sheet/form-sheet-01.tsx +85 -0
- package/skills/monkey-mini-app/references/examples/forms.md +16 -0
- package/skills/monkey-mini-app/references/examples/gantt/gantt-01.tsx +29 -0
- package/skills/monkey-mini-app/references/examples/input/input-01.tsx +10 -0
- package/skills/monkey-mini-app/references/examples/item/item-01.tsx +19 -0
- package/skills/monkey-mini-app/references/examples/jql-input/jql-input-01.tsx +33 -0
- package/skills/monkey-mini-app/references/examples/json-viewer/json-viewer-01.tsx +10 -0
- package/skills/monkey-mini-app/references/examples/kanban/kanban-01.tsx +60 -0
- package/skills/monkey-mini-app/references/examples/label/label-01.tsx +10 -0
- package/skills/monkey-mini-app/references/examples/list-detail/list-detail-01.tsx +117 -0
- package/skills/monkey-mini-app/references/examples/log-viewer/log-viewer-01.tsx +20 -0
- package/skills/monkey-mini-app/references/examples/markdown-editor/markdown-editor-01.tsx +18 -0
- package/skills/monkey-mini-app/references/examples/marker/marker-01.tsx +16 -0
- package/skills/monkey-mini-app/references/examples/mini-calendar/mini-calendar-01.tsx +14 -0
- package/skills/monkey-mini-app/references/examples/misc-charts-blocks/misc-charts-blocks-01.tsx +20 -0
- package/skills/monkey-mini-app/references/examples/misc-charts-blocks/misc-charts-blocks-02.tsx +32 -0
- package/skills/monkey-mini-app/references/examples/misc-charts-blocks/misc-charts-blocks-03.tsx +47 -0
- package/skills/monkey-mini-app/references/examples/misc-charts-blocks/misc-charts-blocks-04.tsx +20 -0
- package/skills/monkey-mini-app/references/examples/misc-charts-blocks/misc-charts-blocks-05.tsx +24 -0
- package/skills/monkey-mini-app/references/examples/misc-charts-blocks/misc-charts-blocks-06.tsx +89 -0
- package/skills/monkey-mini-app/references/examples/misc-editors/misc-editors-01.tsx +114 -0
- package/skills/monkey-mini-app/references/examples/misc-editors/misc-editors-02.tsx +33 -0
- package/skills/monkey-mini-app/references/examples/misc-forms/misc-forms-01.tsx +22 -0
- package/skills/monkey-mini-app/references/examples/misc-forms/misc-forms-02.tsx +37 -0
- package/skills/monkey-mini-app/references/examples/misc-forms/misc-forms-03.tsx +42 -0
- package/skills/monkey-mini-app/references/examples/misc-forms/misc-forms-04.tsx +25 -0
- package/skills/monkey-mini-app/references/examples/misc-forms/misc-forms-05.tsx +27 -0
- package/skills/monkey-mini-app/references/examples/misc-forms/misc-forms-06.tsx +33 -0
- package/skills/monkey-mini-app/references/examples/misc-forms/misc-forms-07.tsx +44 -0
- package/skills/monkey-mini-app/references/examples/misc-overlays/misc-overlays-01.tsx +43 -0
- package/skills/monkey-mini-app/references/examples/misc-overlays/misc-overlays-02.tsx +38 -0
- package/skills/monkey-mini-app/references/examples/misc-primitives/misc-primitives-01.tsx +21 -0
- package/skills/monkey-mini-app/references/examples/misc-primitives/misc-primitives-02.tsx +52 -0
- package/skills/monkey-mini-app/references/examples/misc-primitives/misc-primitives-03.tsx +44 -0
- package/skills/monkey-mini-app/references/examples/number-field/number-field-01.tsx +22 -0
- package/skills/monkey-mini-app/references/examples/overlays.md +11 -0
- package/skills/monkey-mini-app/references/examples/pagination/pagination-01.tsx +51 -0
- package/skills/monkey-mini-app/references/examples/primitives.md +12 -0
- package/skills/monkey-mini-app/references/examples/progress/progress-01.tsx +10 -0
- package/skills/monkey-mini-app/references/examples/relative-date-picker/relative-date-picker-01.tsx +19 -0
- package/skills/monkey-mini-app/references/examples/rich-text-editor/rich-text-editor-01.tsx +15 -0
- package/skills/monkey-mini-app/references/examples/run-timeline/run-timeline-01.tsx +17 -0
- package/skills/monkey-mini-app/references/examples/scrollspy/scrollspy-01.tsx +29 -0
- package/skills/monkey-mini-app/references/examples/separator/separator-01.tsx +10 -0
- package/skills/monkey-mini-app/references/examples/settings-split/settings-split-01.tsx +84 -0
- package/skills/monkey-mini-app/references/examples/shared/jira-wiki-sample.ts +38 -0
- package/skills/monkey-mini-app/references/examples/skeleton/skeleton-01.tsx +10 -0
- package/skills/monkey-mini-app/references/examples/slider/slider-01.tsx +22 -0
- package/skills/monkey-mini-app/references/examples/sortable-list/sortable-list-01.tsx +18 -0
- package/skills/monkey-mini-app/references/examples/spinner/spinner-01.tsx +10 -0
- package/skills/monkey-mini-app/references/examples/stepper/stepper-01.tsx +41 -0
- package/skills/monkey-mini-app/references/examples/table/table-01.tsx +25 -0
- package/skills/monkey-mini-app/references/examples/table-page/table-page-01.tsx +103 -0
- package/skills/monkey-mini-app/references/examples/time-picker/time-picker-01.tsx +19 -0
- package/skills/monkey-mini-app/references/examples/time-range-picker/time-range-picker-01.tsx +14 -0
- package/skills/monkey-mini-app/references/examples/timeline/timeline-01.tsx +18 -0
- package/skills/monkey-mini-app/references/examples/timezone-select/timezone-select-01.tsx +15 -0
- package/skills/monkey-mini-app/references/examples/toggle/toggle-01.tsx +20 -0
- package/skills/monkey-mini-app/references/examples/toggle-group/toggle-group-01.tsx +22 -0
- package/skills/monkey-mini-app/references/examples/tree-view/tree-view-01.tsx +25 -0
- package/skills/monkey-mini-app/references/examples/wizard-shell/wizard-shell-01.tsx +58 -0
- package/skills/monkey-mini-app/references/history.md +23 -7
- package/skills/monkey-mini-app/references/icons.md +99 -69
- package/skills/monkey-mini-app/references/llm-json.md +39 -26
- package/skills/monkey-mini-app/references/loader.md +47 -20
- package/skills/monkey-mini-app/references/looks/aurora-bento.md +88 -0
- package/skills/monkey-mini-app/references/looks/desk-split.md +89 -0
- package/skills/monkey-mini-app/references/looks/editorial.md +78 -0
- package/skills/monkey-mini-app/references/looks/glass-island.md +90 -0
- package/skills/monkey-mini-app/references/looks/index.md +18 -0
- package/skills/monkey-mini-app/references/looks/signage.md +74 -0
- package/skills/monkey-mini-app/references/looks/tape.md +22 -0
- package/skills/monkey-mini-app/references/looks/terminal.md +88 -0
- package/skills/monkey-mini-app/references/looks/void.md +22 -0
- package/skills/monkey-mini-app/references/styling.md +189 -0
- package/skills/monkey-mini-app/references/test.md +12 -12
- package/skills/monkey-mini-app/references/theme.md +197 -0
- package/skills/monkey-mini-app/references/tools.md +12 -12
- package/skills/monkey-mini-app/references/troubleshoot.md +165 -12
- package/skills/monkey-mini-app/templates/README.md +33 -21
- package/skills/monkey-mini-app/templates/{jira → board}/main.api.ts +11 -11
- package/skills/monkey-mini-app/templates/board/manifest.json +8 -0
- package/skills/monkey-mini-app/templates/board/theme.css +46 -0
- package/skills/monkey-mini-app/templates/board/ui.tsx +546 -0
- package/skills/monkey-mini-app/templates/chores/main.api.ts +35 -0
- package/skills/monkey-mini-app/templates/chores/manifest.json +8 -0
- package/skills/monkey-mini-app/templates/chores/theme.css +46 -0
- package/skills/monkey-mini-app/templates/chores/ui.tsx +117 -0
- package/skills/monkey-mini-app/templates/minimal/main.api.ts +5 -5
- package/skills/monkey-mini-app/templates/minimal/manifest.json +1 -2
- package/skills/monkey-mini-app/templates/minimal/ui.tsx +17 -8
- package/skills/monkey-mini-app/templates/radar/api/scan.ts +79 -0
- package/skills/monkey-mini-app/templates/radar/main.api.ts +29 -0
- package/skills/monkey-mini-app/templates/radar/manifest.json +8 -0
- package/skills/monkey-mini-app/templates/radar/shared/events.ts +25 -0
- package/skills/monkey-mini-app/templates/{insights/lib → radar/shared}/sample.ts +1 -1
- package/skills/monkey-mini-app/templates/radar/theme.css +47 -0
- package/skills/monkey-mini-app/templates/radar/ui/brief.tsx +31 -0
- package/skills/monkey-mini-app/templates/radar/ui.tsx +131 -0
- package/skills/monkey-mini-app/templates/runner/main.api.ts +91 -0
- package/skills/monkey-mini-app/templates/runner/manifest.json +8 -0
- package/skills/monkey-mini-app/templates/runner/shared/events.ts +14 -0
- package/skills/monkey-mini-app/templates/runner/theme.css +46 -0
- package/skills/monkey-mini-app/templates/runner/ui.tsx +213 -0
- package/skills/monkey-mini-app/templates/sheets/main.api.ts +276 -0
- package/skills/monkey-mini-app/templates/sheets/manifest.json +8 -0
- package/skills/monkey-mini-app/templates/sheets/theme.css +46 -0
- package/skills/monkey-mini-app/templates/sheets/ui.tsx +419 -0
- package/skills/monkey-mini-app/templates/{todo → today}/main.api.ts +8 -8
- package/skills/monkey-mini-app/templates/today/manifest.json +8 -0
- package/skills/monkey-mini-app/templates/today/theme.css +45 -0
- package/skills/monkey-mini-app/templates/today/ui/item-row.tsx +25 -0
- package/skills/monkey-mini-app/templates/today/ui.tsx +406 -0
- package/skills/monkey-mini-app/templates/{monitor → watch}/main.api.ts +8 -8
- package/skills/monkey-mini-app/templates/watch/manifest.json +8 -0
- package/skills/monkey-mini-app/templates/watch/ui.tsx +187 -0
- package/skills/monkey-mini-app/tsconfig.json +31 -0
- package/skills/monkey-mini-app/types/cdn.d.ts +1 -0
- package/tsup.config.ts +1 -0
- package/skills/monkey-mini-app/templates/agentrun/main.api.ts +0 -78
- package/skills/monkey-mini-app/templates/agentrun/manifest.json +0 -9
- package/skills/monkey-mini-app/templates/agentrun/ui.tsx +0 -125
- package/skills/monkey-mini-app/templates/insights/main.api.ts +0 -101
- package/skills/monkey-mini-app/templates/insights/manifest.json +0 -9
- package/skills/monkey-mini-app/templates/insights/ui.tsx +0 -138
- package/skills/monkey-mini-app/templates/jira/manifest.json +0 -9
- package/skills/monkey-mini-app/templates/jira/ui.tsx +0 -318
- package/skills/monkey-mini-app/templates/monitor/manifest.json +0 -9
- package/skills/monkey-mini-app/templates/monitor/ui.tsx +0 -176
- package/skills/monkey-mini-app/templates/review/main.api.ts +0 -68
- package/skills/monkey-mini-app/templates/review/manifest.json +0 -9
- package/skills/monkey-mini-app/templates/review/ui.tsx +0 -159
- package/skills/monkey-mini-app/templates/todo/manifest.json +0 -8
- package/skills/monkey-mini-app/templates/todo/ui.tsx +0 -177
|
@@ -1,99 +1,236 @@
|
|
|
1
|
-
<!-- generated by scripts/
|
|
2
|
-
|
|
3
|
-
#
|
|
4
|
-
|
|
5
|
-
Import from `@monkey-mini-app/ui
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
|
19
|
-
|
|
20
|
-
| `
|
|
21
|
-
| `
|
|
22
|
-
| `
|
|
23
|
-
| `
|
|
24
|
-
| `
|
|
25
|
-
| `
|
|
26
|
-
| `
|
|
27
|
-
| `
|
|
28
|
-
| `
|
|
29
|
-
| `
|
|
30
|
-
| `
|
|
31
|
-
| `
|
|
32
|
-
| `
|
|
33
|
-
| `
|
|
34
|
-
| `
|
|
35
|
-
| `
|
|
36
|
-
| `
|
|
37
|
-
| `
|
|
38
|
-
|
|
39
|
-
##
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
|
44
|
-
|
|
45
|
-
| `
|
|
46
|
-
| `
|
|
47
|
-
| `
|
|
48
|
-
| `
|
|
49
|
-
| `
|
|
50
|
-
| `
|
|
51
|
-
| `
|
|
52
|
-
| `
|
|
53
|
-
| `
|
|
54
|
-
| `
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
|
61
|
-
|
|
62
|
-
| `
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
| component |
|
|
67
|
-
|
|
68
|
-
| `
|
|
69
|
-
| `
|
|
70
|
-
| `
|
|
71
|
-
| `
|
|
72
|
-
| `
|
|
73
|
-
| `
|
|
74
|
-
| `
|
|
75
|
-
| `
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
|
82
|
-
|
|
83
|
-
| `
|
|
84
|
-
| `
|
|
85
|
-
| `
|
|
86
|
-
| `
|
|
87
|
-
| `
|
|
88
|
-
| `
|
|
89
|
-
| `
|
|
90
|
-
| `
|
|
91
|
-
| `
|
|
92
|
-
| `
|
|
93
|
-
| `
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
1
|
+
<!-- generated by scripts/gen/skill — do not edit -->
|
|
2
|
+
|
|
3
|
+
# Mini-app UI catalog
|
|
4
|
+
|
|
5
|
+
Import components, `useApp`, `Icon` and `Illu*` from `@monkey-mini-app/ui` — the only UI specifier allowed in `ui.tsx` (besides `react` and relative `./lib`).
|
|
6
|
+
The host wraps the iframe with the theme provider + CSS; do not add a Provider yourself.
|
|
7
|
+
Open `contracts/<slug>.md` for **props + parts** + examples.
|
|
8
|
+
|
|
9
|
+
**Grouped by what you are building** (family, declared as `@family` JSDoc on the component).
|
|
10
|
+
`type` is the engineering layer: `component` = L1 base others are built from (often compound —
|
|
11
|
+
check the parts), `block` = opinionated preset, `composite` = form control, `product` = whole feature.
|
|
12
|
+
Inherited HTML/ARIA props (`className`, `style`, `onClick`, `aria-*`) are never listed — every component takes them.
|
|
13
|
+
|
|
14
|
+
## Layout & structure
|
|
15
|
+
|
|
16
|
+
Shell / split / scroll containers and display atoms — they arrange, they don't interact.
|
|
17
|
+
|
|
18
|
+
| component | type | parts | when | contract |
|
|
19
|
+
|---|---|---|---|---|
|
|
20
|
+
| `AppShell` | block | — | Root layout for a mini-app page | [docs](contracts/app-shell.md) |
|
|
21
|
+
| `DashboardShell` | block | — | Page shape: metrics up top, charts below, optional activity rail — ops overviews, monitor walls | [docs](contracts/dashboard-shell.md) |
|
|
22
|
+
| `DescriptionList` | block | — | Detail/inspector panel of a selected row — the default “show one record” view. | [docs](contracts/description-list.md) |
|
|
23
|
+
| `FormSheet` | block | — | Page shape: focused create/edit over a list — new record, edit record, wizard-less config | [docs](contracts/form-sheet.md) |
|
|
24
|
+
| `ListDetail` | block | — | Page shape: click a row, then read or edit that one record beside the list — orders, tickets, contacts, log lines | [docs](contracts/list-detail.md) |
|
|
25
|
+
| `PageHeader` | block | — | Top of a page inside AppShell main | [docs](contracts/page-header.md) |
|
|
26
|
+
| `SettingsSplit` | block | — | Page shape: a settings page, integration config, or a long report with anchored sections | [docs](contracts/settings-split.md) |
|
|
27
|
+
| `TablePage` | block | — | Page shape: one wide filterable table is the product — inventories, ledgers, saved views | [docs](contracts/table-page.md) |
|
|
28
|
+
| `WizardShell` | block | — | Page shape: create / import / onboarding, one step at a time with validation per step | [docs](contracts/wizard-shell.md) |
|
|
29
|
+
| `AspectRatio` | component | `AspectRatio` | Keeping an image/video/embed from shifting the layout while loading. | [docs](contracts/aspect-ratio.md) |
|
|
30
|
+
| `Avatar` | component | `Avatar` `AvatarBadge` +4 | User initials/photo next to a name in rows, comments, pickers. | [docs](contracts/avatar.md) |
|
|
31
|
+
| `Collapsible` | component | `Collapsible` `CollapsibleContent` +1 | A single disclosure (advanced options). Several stacked → `Accordion`. | [docs](contracts/collapsible.md) |
|
|
32
|
+
| `Item` | component | `Item` `ItemActions` +8 | A uniform list row when `DataGrid` is too heavy. | [docs](contracts/item.md) |
|
|
33
|
+
| `Kbd` | component | `Kbd` `KbdGroup` | Documenting ⌘K-style shortcuts in help panels. | [docs](contracts/kbd.md) |
|
|
34
|
+
| `Marker` | component | `Marker` `MarkerContent` +1 | Small state markers inside a sentence or legend. | [docs](contracts/marker.md) |
|
|
35
|
+
| `Resizable` | component | `ResizableHandle` `ResizablePanel` +1 | Master-detail or editor + preview inside the app body. | [docs](contracts/resizable.md) |
|
|
36
|
+
| `ScrollArea` | component | `ScrollArea` `ScrollBar` | A bounded panel (list in a card). Whole-page scroll → plain div. | [docs](contracts/scroll-area.md) |
|
|
37
|
+
| `Separator` | component | `Separator` | Grouping inside panels. | [docs](contracts/separator.md) |
|
|
38
|
+
|
|
39
|
+
## Navigation
|
|
40
|
+
|
|
41
|
+
Menus, sidebars, palettes, tabs, pagination, scroll-spy.
|
|
42
|
+
|
|
43
|
+
| component | type | parts | when | contract |
|
|
44
|
+
|---|---|---|---|---|
|
|
45
|
+
| `Scrollspy` | block | — | Long settings/report page with jump links. | [docs](contracts/scrollspy.md) |
|
|
46
|
+
| `Breadcrumb` | component | `Breadcrumb` `BreadcrumbEllipsis` +5 | Deep mini-app views; usually one level is enough — prefer `Tabs`/`AppShell` nav. | [docs](contracts/breadcrumb.md) |
|
|
47
|
+
| `Command` | component | `Command` `CommandDialog` +7 | Jump between views/actions inside one app. | [docs](contracts/command.md) |
|
|
48
|
+
| `ContextMenu` | component | `ContextMenu` `ContextMenuCheckboxItem` +13 | Row/canvas operations. Trigger-button actions → `DropdownMenu`. | [docs](contracts/context-menu.md) |
|
|
49
|
+
| `DropdownMenu` | component | `DropdownMenu` `DropdownMenuCheckboxItem` +13 | Row `MoreHorizontal` actions. Free-form panel content → `Popover`. | [docs](contracts/dropdown-menu.md) |
|
|
50
|
+
| `Menubar` | component | `Menubar` `MenubarCheckboxItem` +14 | Rarely right for a panel-width mini-app — prefer `Tabs` / `DropdownMenu`. | [docs](contracts/menubar.md) |
|
|
51
|
+
| `NavigationMenu` | component | `NavigationMenu` `NavigationMenuContent` +6 | Not for mini-apps with one screen — use `Tabs` or `AppShell` sidebar. | [docs](contracts/navigation-menu.md) |
|
|
52
|
+
| `Pagination` | component | `Pagination` `PaginationContent` +5 | Only when you page by hand; `DataGrid` does this itself. | [docs](contracts/pagination.md) |
|
|
53
|
+
| `Sidebar` | component | `Sidebar` `SidebarContent` +21 | Many sections in one app; `AppShell` already wires one for you. | [docs](contracts/sidebar.md) |
|
|
54
|
+
| `Tabs` | component | `Tabs` `TabsContent` +2 | Board vs table, or settings sections. Navigation between routes/pages → keep it in your own state. | [docs](contracts/tabs.md) |
|
|
55
|
+
|
|
56
|
+
## Surface
|
|
57
|
+
|
|
58
|
+
Elevates content above the page: card, dialog, sheet, drawer, popover, tooltip, accordion.
|
|
59
|
+
|
|
60
|
+
| component | type | parts | when | contract |
|
|
61
|
+
|---|---|---|---|---|
|
|
62
|
+
| `KanbanIssuePanel` | product | — | Board + click-to-edit issue. Pair with `Kanban`'s selected card. | [docs](contracts/kanban-issue-panel.md) |
|
|
63
|
+
| `DetailPanel` | block | — | Master-detail after row/card click | [docs](contracts/detail-panel.md) |
|
|
64
|
+
| `ConfirmDialog` | composite | — | Any destructive action. Needs a form inside → compose `Dialog` yourself. | [docs](contracts/confirm-dialog.md) |
|
|
65
|
+
| `Accordion` | component | `Accordion` `AccordionContent` +2 | Collapsible groups in settings/details. | [docs](contracts/accordion.md) |
|
|
66
|
+
| `AlertDialog` | component | `AlertDialog` `AlertDialogAction` +10 | Deleting/irreversible actions that must be answered. | [docs](contracts/alert-dialog.md) |
|
|
67
|
+
| `Bubble` | component | `Bubble` `BubbleContent` +2 | Conversational UI (assistant turns). Records/logs → `ActivityFeed` / `Message`. | [docs](contracts/bubble.md) |
|
|
68
|
+
| `Card` | component | `Card` `CardAction` +5 | The default container for a block of related UI. | [docs](contracts/card.md) |
|
|
69
|
+
| `Dialog` | component | `Dialog` `DialogClose` +8 | Focused edit/confirm flow. Needs no focus takeover → `Sheet`. Destructive yes/no → `ConfirmDialog`. Size it with `width` on `DialogContent`: the base caps at `sm:max-w-sm`, so a `max-w-*` in `className` loses at ≥sm. | [docs](contracts/dialog.md) |
|
|
70
|
+
| `Drawer` | component | `Drawer` `DrawerClose` +9 | Mobile-ish bottom sheet on narrow panels. Desktop detail → `Sheet`. | [docs](contracts/drawer.md) |
|
|
71
|
+
| `HoverCard` | component | `HoverCard` `HoverCardContent` +1 | Peek a user/issue without navigating. Needs a decision → `Dialog`. | [docs](contracts/hover-card.md) |
|
|
72
|
+
| `Message` | component | `Message` `MessageAvatar` +4 | Assistant/user turns. Timestamped log rows → `LogViewer`. | [docs](contracts/message.md) |
|
|
73
|
+
| `Popover` | component | `Popover` `PopoverContent` +4 | Small editor/filter anchored to a control. Menus of commands → `DropdownMenu`. | [docs](contracts/popover.md) |
|
|
74
|
+
| `Sheet` | component | `Sheet` `SheetClose` +6 | Detail/edit panel that keeps the list visible — the usual master-detail pattern. Size it with `width` on `SheetContent`: the panel carries its own `data-[side=right]:sm:max-w-sm` / `data-[side=left]:sm:max-w-sm`, so a `max-w-*` in `className` loses at ≥sm (inline style or `!max-w-*` also work). | [docs](contracts/sheet.md) |
|
|
75
|
+
| `Tooltip` | component | `Tooltip` `TooltipContent` +2 | Explaining an icon-only button. Never put an action in it. | [docs](contracts/tooltip.md) |
|
|
76
|
+
|
|
77
|
+
## Form
|
|
78
|
+
|
|
79
|
+
Inputs, selects, toggles, buttons and actions — anything the user edits.
|
|
80
|
+
|
|
81
|
+
| component | type | parts | when | contract |
|
|
82
|
+
|---|---|---|---|---|
|
|
83
|
+
| `FileDropzone` | product | — | Getting a local File into the app (then upload via `ctx.http` in the api layer). | [docs](contracts/file-dropzone.md) |
|
|
84
|
+
| `JqlInput` | product | — | Issue search / saved filters. Needs a real field list: pass `fields`. | [docs](contracts/jql-input.md) |
|
|
85
|
+
| `Autocomplete` | composite | — | Free text allowed but known values should be suggested. Strict pick-list → `Select`. | [docs](contracts/autocomplete.md) |
|
|
86
|
+
| `Cascader` | composite | — | Hierarchical codes (region → site → line). Flat tree → `TreeView`. | [docs](contracts/cascader.md) |
|
|
87
|
+
| `ColorPicker` | composite | — | Theme/label colour config. Never for secrets. | [docs](contracts/color-picker.md) |
|
|
88
|
+
| `CurrencyInput` | composite | — | Money fields; keeps the raw string out of your state. | [docs](contracts/currency-input.md) |
|
|
89
|
+
| `NumberField` | composite | — | Any number the user edits — keeps NaN out of your state. | [docs](contracts/number-field.md) |
|
|
90
|
+
| `PasswordField` | composite | — | Typing a token/password into your own state. **Never** persist it to storage. | [docs](contracts/password-field.md) |
|
|
91
|
+
| `PhoneInput` | composite | — | CN/mobile numbers. | [docs](contracts/phone-input.md) |
|
|
92
|
+
| `Rating` | composite | — | Feedback/score capture, 1–max. | [docs](contracts/rating.md) |
|
|
93
|
+
| `SearchInput` | composite | — | Filter-as-you-type against `DataGrid`/lists — use `onDebouncedChange` for network calls. | [docs](contracts/search-input.md) |
|
|
94
|
+
| `SliderRange` | composite | — | min/max numeric filters. | [docs](contracts/slider-range.md) |
|
|
95
|
+
| `TagInput` | composite | — | Labels/owners where free values are allowed (`Transfer` when choosing from a fixed pool). | [docs](contracts/tag-input.md) |
|
|
96
|
+
| `Transfer` | composite | — | Selecting many items from a known pool (assign users to a shift). | [docs](contracts/transfer.md) |
|
|
97
|
+
| `UserPicker` | composite | — | Assignee/owner fields; you supply the user list. | [docs](contracts/user-picker.md) |
|
|
98
|
+
| `Button` | component | `Button` | Every click target. `variant="destructive"` for delete, `size="icon*"` for icon-only (add aria-label). | [docs](contracts/button.md) |
|
|
99
|
+
| `ButtonGroup` | component | `ButtonGroup` `ButtonGroupSeparator` +1 | 2–5 mutually related actions (view switch, alignment). Tabs of content → `Tabs`. | [docs](contracts/button-group.md) |
|
|
100
|
+
| `Checkbox` | component | `Checkbox` | Multi-select rows / opt-in. | [docs](contracts/checkbox.md) |
|
|
101
|
+
| `Combobox` | component | `Combobox` `ComboboxChip` +13 | When you need full control of the popover list. Simple suggestion box → `Autocomplete`. | [docs](contracts/combobox.md) |
|
|
102
|
+
| `Field` | component | `Field` `FieldContent` +8 | Any form row that must read well and stay accessible. | [docs](contracts/field.md) |
|
|
103
|
+
| `Input` | component | `Input` | Plain text. Numbers → `NumberField`; secrets → `PasswordField`; search → `SearchInput`. | [docs](contracts/input.md) |
|
|
104
|
+
| `InputGroup` | component | `InputGroup` `InputGroupAddon` +4 | Search/url/amount fields with adornments; keep validation in `NumberField` etc. | [docs](contracts/input-group.md) |
|
|
105
|
+
| `Label` | component | `Label` | Always bind `htmlFor` — bare text labels are not accessible. | [docs](contracts/label.md) |
|
|
106
|
+
| `NativeSelect` | component | `NativeSelect` `NativeSelectOptGroup` +1 | Short option lists where a plain select is enough and `Select` is overkill. | [docs](contracts/native-select.md) |
|
|
107
|
+
| `Questionnaire` | component | `Questionnaire` `QuestionnaireActions` +13 | Structured ask-the-user blocks; you persist the answers. | [docs](contracts/questionnaire.md) |
|
|
108
|
+
| `RadioGroup` | component | `RadioGroup` `RadioGroupItem` | 2–5 mutually exclusive options. Many options → `Select`. | [docs](contracts/radio-group.md) |
|
|
109
|
+
| `Select` | component | `Select` `SelectContent` +8 | Closed set of options (searchable/large → `Autocomplete` or `DataGrid` filter). | [docs](contracts/select.md) |
|
|
110
|
+
| `Slider` | component | `Slider` | One numeric value. Range → `SliderRange`. | [docs](contracts/slider.md) |
|
|
111
|
+
| `Switch` | component | `Switch` | Immediate on/off settings (submit-on-toggle). | [docs](contracts/switch.md) |
|
|
112
|
+
| `Textarea` | component | `Textarea` | Notes/prompts. Code → `CodeEditor`; markdown → `MarkdownEditor`. | [docs](contracts/textarea.md) |
|
|
113
|
+
| `Toggle` | component | `Toggle` | Binary formatting switch (bold, filters on). | [docs](contracts/toggle.md) |
|
|
114
|
+
| `ToggleGroup` | component | `ToggleGroup` `ToggleGroupItem` | Multiple independent on/off buttons; exclusive selection → `Tabs`/`ButtonGroup`. | [docs](contracts/toggle-group.md) |
|
|
115
|
+
|
|
116
|
+
## Data & tables
|
|
117
|
+
|
|
118
|
+
Rows, grids, boards, trees, sortable lists and their filters.
|
|
119
|
+
|
|
120
|
+
| component | type | parts | when | contract |
|
|
121
|
+
|---|---|---|---|---|
|
|
122
|
+
| `DataGrid` | product | — | Any list/table of rows — prefer over raw Table* | [docs](contracts/data-grid.md) |
|
|
123
|
+
| `Kanban` | product | — | Issue/workflow boards | [docs](contracts/kanban.md) |
|
|
124
|
+
| `SortableList` | product | — | Priority queues / column order. Read-only ordered events → `Timeline`. | [docs](contracts/sortable-list.md) |
|
|
125
|
+
| `TreeView` | product | — | Any hierarchy without file semantics. Files → `FileTree`. | [docs](contracts/tree-view.md) |
|
|
126
|
+
| `EnvTable` | block | — | Settings / deploy preview / secrets display | [docs](contracts/env-table.md) |
|
|
127
|
+
| `FileTree` | block | — | Repo/zip contents where selection matters. Plain nested list → `TreeView`. | [docs](contracts/file-tree.md) |
|
|
128
|
+
| `FilterBar` | block | — | Above DataGrid or any filtered list | [docs](contracts/filter-bar.md) |
|
|
129
|
+
| `TestStepList` | block | — | QA cases, checklists that get executed and graded. | [docs](contracts/test-step-list.md) |
|
|
130
|
+
| `Table` | component | `Table` `TableBody` +6 | Only when you need full control of cells. Otherwise use `DataGrid` (sorting/filter/paging/CSV built in). | [docs](contracts/table.md) |
|
|
131
|
+
|
|
132
|
+
## Chart & data
|
|
133
|
+
|
|
134
|
+
Stat / KPI cards, charts, gauges, sparklines, git graph.
|
|
135
|
+
|
|
136
|
+
| component | type | parts | when | contract |
|
|
137
|
+
|---|---|---|---|---|
|
|
138
|
+
| `CommitGraph` | product | — | App history, release notes, git timeline views | [docs](contracts/commit-graph.md) |
|
|
139
|
+
| `DonutChart` | block | — | Part-of-whole (≤6 slices): storage usage, status split. More categories → `StackedBarChart`. | [docs](contracts/donut-chart.md) |
|
|
140
|
+
| `Gauge` | block | — | A single health/capacity number that needs a zone (SLO, disk). Series over time → `Sparkline`. | [docs](contracts/gauge.md) |
|
|
141
|
+
| `RadarChart` | block | — | Comparing an item across 4–8 dimensions (scores, coverage). | [docs](contracts/radar-chart.md) |
|
|
142
|
+
| `Sparkline` | block | — | Trend inside a table row or KPI card. | [docs](contracts/sparkline.md) |
|
|
143
|
+
| `StackedBarChart` | block | — | Comparing several series across categories (pass/fail per day). Single ratio → `DonutChart`; trend → `Sparkline`. | [docs](contracts/stacked-bar-chart.md) |
|
|
144
|
+
| `StatCard` | block | — | Dashboard metric strip | [docs](contracts/stat-card.md) |
|
|
145
|
+
| `TrendCard` | block | — | Metric + direction over time. Metric only → `StatCard`. | [docs](contracts/trend-card.md) |
|
|
146
|
+
| `Chart` | component | `ChartContainer` `ChartLegend` +4 | Only when no `*Chart` block fits — then you own the series. Prefer `DonutChart` / `StackedBarChart` / `Sparkline` / `Gauge` / `RadarChart`. | [docs](contracts/chart.md) |
|
|
147
|
+
|
|
148
|
+
## Feedback & status
|
|
149
|
+
|
|
150
|
+
Status/severity badges, progress, skeleton, spinner, alerts, empty states, toasts.
|
|
151
|
+
|
|
152
|
+
| component | type | parts | when | contract |
|
|
153
|
+
|---|---|---|---|---|
|
|
154
|
+
| `Stepper` | product | — | Wizard/progress of an ordered process. Time axis → `RunTimeline`. | [docs](contracts/stepper.md) |
|
|
155
|
+
| `StepperItem` | product | — | As a child of `Stepper` only — status is `default \| active \| completed` (lowercase). | [docs](contracts/stepper-item.md) |
|
|
156
|
+
| `EnvBadge` | block | — | prd / stg / dev markers in headers and tables. | [docs](contracts/env-badge.md) |
|
|
157
|
+
| `NotificationCenter` | block | — | Inbox/alert panel. Audit log (read-only, with time) → `ActivityFeed`. | [docs](contracts/notification-center.md) |
|
|
158
|
+
| `ProgressRing` | block | — | One percent-done value in a tight space (card corner, table cell). | [docs](contracts/progress-ring.md) |
|
|
159
|
+
| `SeverityChip` | block | — | P0–P4, blocker/critical columns. Run outcome → `StatusBadge`. | [docs](contracts/severity-chip.md) |
|
|
160
|
+
| `StatusBadge` | block | — | pass \| fail \| blocked \| flaky \| running \| pending cells and chips | [docs](contracts/status-badge.md) |
|
|
161
|
+
| `Alert` | component | `Alert` `AlertAction` +2 | Explaining a failed state in place. Transient → `toast()`. | [docs](contracts/alert.md) |
|
|
162
|
+
| `Badge` | component | `Badge` | Static tags/counts. Status → `StatusBadge`, severity → `SeverityChip`. | [docs](contracts/badge.md) |
|
|
163
|
+
| `Empty` | component | `Empty` `EmptyContent` +4 | Any list/panel with no rows — pair media with an `Illu*`. | [docs](contracts/empty.md) |
|
|
164
|
+
| `Progress` | component | `Progress` `ProgressIndicator` +3 | Full-width scan/import progress. Compact circle → `ProgressRing`. | [docs](contracts/progress.md) |
|
|
165
|
+
| `Skeleton` | component | `Skeleton` | First paint while `call()` is pending — match the real layout's size. | [docs](contracts/skeleton.md) |
|
|
166
|
+
| `Spinner` | component | `Spinner` | Inside a button while `call()` is pending. Known % → `Progress`. | [docs](contracts/spinner.md) |
|
|
167
|
+
| `Toast` | component | `Toast` `ToastAction` +8 | Confirm/save failures. The host already mounts the provider — call `toast(...)`. | [docs](contracts/toast.md) |
|
|
168
|
+
|
|
169
|
+
## Calendar & date
|
|
170
|
+
|
|
171
|
+
Calendars, date/time pickers and ranges, durations, timezones, scheduling views.
|
|
172
|
+
|
|
173
|
+
| component | type | parts | when | contract |
|
|
174
|
+
|---|---|---|---|---|
|
|
175
|
+
| `EventCalendar` | product | — | Scheduling, on-call, release windows | [docs](contracts/event-calendar.md) |
|
|
176
|
+
| `Gantt` | product | — | Plans/schedules with start+end per row. Ordered events → `Timeline`. | [docs](contracts/gantt.md) |
|
|
177
|
+
| `DatePicker` | composite | — | Filtering or storing one day. With a clock → `DateTimePicker`. | [docs](contracts/date-picker.md) |
|
|
178
|
+
| `DateRangePicker` | composite | — | Filters needing from/to calendar days | [docs](contracts/date-range-picker.md) |
|
|
179
|
+
| `DateTimePicker` | composite | — | Scheduling moments, not days. | [docs](contracts/date-time-picker.md) |
|
|
180
|
+
| `DateTimeRangePicker` | composite | — | Run windows, on-call shifts. | [docs](contracts/date-time-range-picker.md) |
|
|
181
|
+
| `DurationInput` | composite | — | Timeouts/estimates where you store minutes but type human units. | [docs](contracts/duration-input.md) |
|
|
182
|
+
| `MiniCalendar` | composite | — | Inside a popover or sidebar. Full page with events → `EventCalendar`. | [docs](contracts/mini-calendar.md) |
|
|
183
|
+
| `RelativeDatePicker` | composite | — | Dashboard filters where “last 7 days” beats two calendars. | [docs](contracts/relative-date-picker.md) |
|
|
184
|
+
| `TimePicker` | composite | — | Clock-only fields. `value` is a string, not a Date. | [docs](contracts/time-picker.md) |
|
|
185
|
+
| `TimeRangePicker` | composite | — | Daily windows (maintenance 02:00–04:00). | [docs](contracts/time-range-picker.md) |
|
|
186
|
+
| `TimeWheel` | composite | — | Inside a time picker where tapping a list beats typing. Prefer `TimePicker` for a normal field. | [docs](contracts/time-wheel.md) |
|
|
187
|
+
| `TimezoneSelect` | composite | — | Pair with `DateTimePicker` when data is UTC. | [docs](contracts/timezone-select.md) |
|
|
188
|
+
| `Calendar` | component | `Calendar` `CalendarDayButton` | An inline calendar inside your own layout. As a field with input → `DatePicker`. | [docs](contracts/calendar.md) |
|
|
189
|
+
|
|
190
|
+
## Realtime
|
|
191
|
+
|
|
192
|
+
Live feeds, timelines, logs and consoles.
|
|
193
|
+
|
|
194
|
+
| component | type | parts | when | contract |
|
|
195
|
+
|---|---|---|---|---|
|
|
196
|
+
| `LogViewer` | product | — | Streaming / CLI-style log output | [docs](contracts/log-viewer.md) |
|
|
197
|
+
| `Timeline` | product | — | Statuses/history without durations. Durations → `RunTimeline`. | [docs](contracts/timeline.md) |
|
|
198
|
+
| `ActivityFeed` | block | — | Read-only “who did what when” — commits, deploys, agent runs. For steps with status use `RunTimeline`. | [docs](contracts/activity-feed.md) |
|
|
199
|
+
| `CommentThread` | block | — | Issue/ticket discussion, review comments. Editing a comment is your job, not the component's. | [docs](contracts/comment-thread.md) |
|
|
200
|
+
| `RunTimeline` | block | — | CI/agent/job phases on a time axis. Plain ordered events → `Timeline`. | [docs](contracts/run-timeline.md) |
|
|
201
|
+
| `Terminal` | block | — | Showing a command + its output verbatim. Timestamped levels/scrolling → `LogViewer`. | [docs](contracts/terminal.md) |
|
|
202
|
+
| `MessageScroller` | component | `MessageScroller` `MessageScrollerButton` +4 | Streaming chat output. Logs by timestamp → `LogViewer`. | [docs](contracts/message-scroller.md) |
|
|
203
|
+
|
|
204
|
+
## Rich text
|
|
205
|
+
|
|
206
|
+
Markdown / rich-text render and edit, wiki markup.
|
|
207
|
+
|
|
208
|
+
| component | type | parts | when | contract |
|
|
209
|
+
|---|---|---|---|---|
|
|
210
|
+
| `JiraWiki` | product | — | Jira description / comment body | [docs](contracts/jira-wiki.md) |
|
|
211
|
+
| `Markdown` | product | — | Model output, README-ish bodies. Children must be a string. | [docs](contracts/markdown.md) |
|
|
212
|
+
| `MarkdownEditor` | product | — | Authoring md bodies. Read-only render → `Markdown`. | [docs](contracts/markdown-editor.md) |
|
|
213
|
+
| `RichTextEditor` | product | — | Notes/descriptions you store as **HTML**. Markdown → `MarkdownEditor`; code → `CodeEditor`. Sanitize server-side before rendering elsewhere. | [docs](contracts/rich-text-editor.md) |
|
|
214
|
+
|
|
215
|
+
## Discovery & inspect
|
|
216
|
+
|
|
217
|
+
Inspect, compare and browse artefacts: diff, JSON, code, requests, attachments.
|
|
218
|
+
|
|
219
|
+
| component | type | parts | when | contract |
|
|
220
|
+
|---|---|---|---|---|
|
|
221
|
+
| `CodeBlock` | product | — | Showing a snippet/command. Editable → `CodeEditor`. | [docs](contracts/code-block.md) |
|
|
222
|
+
| `CodeEditor` | product | — | Editing config/scripts in-app. Do not `import @codemirror/*` or add it to package.json. | [docs](contracts/code-editor.md) |
|
|
223
|
+
| `DiffViewer` | product | — | Comparing two versions of text. Pass `original` + `modified` strings. | [docs](contracts/diff-viewer.md) |
|
|
224
|
+
| `JsonViewer` | product | — | API responses/config. Plain text with wrapping → `CodeBlock`. | [docs](contracts/json-viewer.md) |
|
|
225
|
+
| `AttachmentGallery` | block | — | A record has N files/images and you show them as tiles, not a table. | [docs](contracts/attachment-gallery.md) |
|
|
226
|
+
| `RequestInspector` | block | — | Debugging one API call: method, url, bodies. Multiple calls streaming → `LogViewer`. | [docs](contracts/request-inspector.md) |
|
|
227
|
+
| `Copyable` | composite | — | IDs, hashes, URLs, tokens the user pastes elsewhere. | [docs](contracts/copyable.md) |
|
|
228
|
+
| `Attachment` | component | `Attachment` `AttachmentAction` +7 | One selected file inside a form. A grid of many → `AttachmentGallery`. | [docs](contracts/attachment.md) |
|
|
229
|
+
|
|
230
|
+
## Animation
|
|
231
|
+
|
|
232
|
+
Entrance / exit / layout motion: reveal, stagger, animated presence.
|
|
233
|
+
|
|
234
|
+
| component | type | parts | when | contract |
|
|
235
|
+
|---|---|---|---|---|
|
|
236
|
+
| `Reveal` | block | — | A card, row, or section appearing on first paint or after a filter change. Not for a hover/press response (one property: use a Tailwind `transition`) and not for animating an element out (use `AnimatePresence`). | [docs](contracts/reveal.md) |
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<!-- generated by scripts/gen/skill — do not edit -->
|
|
2
|
+
|
|
3
|
+
# Accordion (L1 primitive)
|
|
4
|
+
|
|
5
|
+
Vertically expanding sections.
|
|
6
|
+
|
|
7
|
+
**when** Collapsible groups in settings/details.
|
|
8
|
+
|
|
9
|
+
Compound: compose the parts below — **do not invent part names**.
|
|
10
|
+
|
|
11
|
+
`import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@monkey-mini-app/ui"`
|
|
12
|
+
|
|
13
|
+
`packages/ui/src/components/accordion.tsx` · family: Surface · type: component · primitive
|
|
14
|
+
|
|
15
|
+
## Parts
|
|
16
|
+
|
|
17
|
+
| part | own props |
|
|
18
|
+
|---|---|
|
|
19
|
+
| `Accordion` | `disabled?` `hiddenUntilFound?` `keepMounted?` `loopFocus?` `multiple?` `onValueChange?` `orientation?` `render?` `value?` |
|
|
20
|
+
| `AccordionContent` | `hiddenUntilFound?` `keepMounted?` `render?` |
|
|
21
|
+
| `AccordionItem` | `disabled?` `onOpenChange?` `render?` `value?` |
|
|
22
|
+
| `AccordionTrigger` | `nativeButton?` `render?` |
|
|
23
|
+
|
|
24
|
+
_Inherited HTML/ARIA props (`className`, `style`, `id`, `onClick`, `aria-*`, …) omitted — every component takes them._
|
|
25
|
+
|
|
26
|
+
## Skeleton
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
<Accordion type="single"><AccordionItem value="s1"><AccordionTrigger>高级</AccordionTrigger><AccordionContent>…</AccordionContent></AccordionItem></Accordion>
|
|
30
|
+
```
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
<!-- generated by scripts/
|
|
1
|
+
<!-- generated by scripts/gen/skill — do not edit -->
|
|
2
2
|
|
|
3
3
|
# ActivityFeed
|
|
4
4
|
|
|
5
|
+
Chronological activity list (avatar + text + time).
|
|
6
|
+
|
|
7
|
+
**when** Read-only “who did what when” — commits, deploys, agent runs. For steps with status use `RunTimeline`.
|
|
8
|
+
|
|
5
9
|
`import { ActivityFeed, TimelineItem } from "@monkey-mini-app/ui"`
|
|
6
10
|
|
|
7
|
-
`packages/ui/src/blocks/activity-feed.tsx` ·
|
|
11
|
+
`packages/ui/src/blocks/activity-feed.tsx` · family: Realtime · type: block
|
|
8
12
|
|
|
9
13
|
## Props
|
|
10
14
|
|
|
@@ -22,3 +26,9 @@
|
|
|
22
26
|
| `id` | `string` | ✓ | |
|
|
23
27
|
| `time` | `string \| undefined` | | |
|
|
24
28
|
| `title` | `string` | ✓ | |
|
|
29
|
+
|
|
30
|
+
## Example
|
|
31
|
+
|
|
32
|
+
```tsx
|
|
33
|
+
<ActivityFeed items={[{ id: "1", title: "部署完成", time: "10:24" }]} />
|
|
34
|
+
```
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<!-- generated by scripts/gen/skill — do not edit -->
|
|
2
|
+
|
|
3
|
+
# AlertDialog (L1 primitive)
|
|
4
|
+
|
|
5
|
+
Blocking confirm modal (no click-outside dismiss).
|
|
6
|
+
|
|
7
|
+
**when** Deleting/irreversible actions that must be answered.
|
|
8
|
+
|
|
9
|
+
Compound: compose the parts below — **do not invent part names**.
|
|
10
|
+
|
|
11
|
+
`import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger } from "@monkey-mini-app/ui"`
|
|
12
|
+
|
|
13
|
+
`packages/ui/src/components/alert-dialog.tsx` · family: Surface · type: component · primitive
|
|
14
|
+
|
|
15
|
+
## Parts
|
|
16
|
+
|
|
17
|
+
| part | own props |
|
|
18
|
+
|---|---|
|
|
19
|
+
| `AlertDialog` | `actionsRef?` `defaultOpen?` `defaultTriggerId?` `handle?` `onOpenChange?` `onOpenChangeComplete?` `open?` `triggerId?` |
|
|
20
|
+
| `AlertDialogAction` | `focusableWhenDisabled?` `nativeButton?` `render?` `size?=default/xs/sm/lg/icon/icon-xs/icon-sm/icon-lg` `variant?=link/default/outline/secondary/ghost/destructive` |
|
|
21
|
+
| `AlertDialogCancel` | `nativeButton?` `render?` `size?=default/xs/sm/lg/icon/icon-xs/icon-sm/icon-lg` `variant?=link/default/outline/secondary/ghost/destructive` |
|
|
22
|
+
| `AlertDialogContent` | `finalFocus?` `initialFocus?` `render?` `size?=default/sm` |
|
|
23
|
+
| `AlertDialogDescription` | `render?` |
|
|
24
|
+
| `AlertDialogFooter` | — |
|
|
25
|
+
| `AlertDialogHeader` | — |
|
|
26
|
+
| `AlertDialogMedia` | — |
|
|
27
|
+
| `AlertDialogOverlay` | `forceRender?` `render?` |
|
|
28
|
+
| `AlertDialogPortal` | `container?` `keepMounted?` `render?` |
|
|
29
|
+
| `AlertDialogTitle` | `render?` |
|
|
30
|
+
| `AlertDialogTrigger` | `handle?` `nativeButton?` `payload?` `render?` |
|
|
31
|
+
|
|
32
|
+
_Inherited HTML/ARIA props (`className`, `style`, `id`, `onClick`, `aria-*`, …) omitted — every component takes them._
|
|
33
|
+
|
|
34
|
+
## Skeleton
|
|
35
|
+
|
|
36
|
+
```tsx
|
|
37
|
+
<AlertDialog open={ask} onOpenChange={setAsk}><AlertDialogContent><AlertDialogTitle>确定删除?</AlertDialogTitle><AlertDialogAction onClick={del}>删除</AlertDialogAction></AlertDialogContent></AlertDialog>
|
|
38
|
+
```
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<!-- generated by scripts/gen/skill — do not edit -->
|
|
2
|
+
|
|
3
|
+
# Alert (L1 primitive)
|
|
4
|
+
|
|
5
|
+
Inline message block (info/warning/error).
|
|
6
|
+
|
|
7
|
+
**when** Explaining a failed state in place. Transient → `toast()`.
|
|
8
|
+
|
|
9
|
+
Compound: compose the parts below — **do not invent part names**.
|
|
10
|
+
|
|
11
|
+
`import { Alert, AlertAction, AlertDescription, AlertTitle } from "@monkey-mini-app/ui"`
|
|
12
|
+
|
|
13
|
+
`packages/ui/src/components/alert.tsx` · family: Feedback & status · type: component · primitive
|
|
14
|
+
|
|
15
|
+
## Parts
|
|
16
|
+
|
|
17
|
+
| part | own props |
|
|
18
|
+
|---|---|
|
|
19
|
+
| `Alert` | `variant?=default/destructive` |
|
|
20
|
+
| `AlertAction` | — |
|
|
21
|
+
| `AlertDescription` | — |
|
|
22
|
+
| `AlertTitle` | — |
|
|
23
|
+
|
|
24
|
+
_Inherited HTML/ARIA props (`className`, `style`, `id`, `onClick`, `aria-*`, …) omitted — every component takes them._
|
|
25
|
+
|
|
26
|
+
## Skeleton
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
<Alert variant="destructive"><AlertTitle>拉取失败</AlertTitle><AlertDescription>上游 502,已用缓存</AlertDescription></Alert>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Examples
|
|
33
|
+
|
|
34
|
+
Runnable files under `references/examples/` — portable by construction (`react` +
|
|
35
|
+
`@monkey-mini-app/ui` + relatives), so copy the closest one into `ui.tsx` / `ui/`.
|
|
36
|
+
Pick by **scenario**, then open the file you need.
|
|
37
|
+
|
|
38
|
+
- **[alert-01.tsx](../examples/alert/alert-01.tsx)** — Alert — Inline, non-blocking notice inside a page or panel — title + description, colours follow the semantic theme. Use for 'saved', '2 checks failed'; reach for Toast for transient confirmations and Dialog when the user must acknowledge.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- generated by scripts/
|
|
1
|
+
<!-- generated by scripts/gen/skill — do not edit -->
|
|
2
2
|
|
|
3
3
|
# AppShell
|
|
4
4
|
|
|
@@ -8,7 +8,7 @@ App frame: optional sidebar + header + main.
|
|
|
8
8
|
|
|
9
9
|
`import { AppShell } from "@monkey-mini-app/ui"`
|
|
10
10
|
|
|
11
|
-
`packages/ui/src/blocks/app-shell.tsx` ·
|
|
11
|
+
`packages/ui/src/blocks/app-shell.tsx` · family: Layout & structure · type: block
|
|
12
12
|
|
|
13
13
|
## Props
|
|
14
14
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<!-- generated by scripts/gen/skill — do not edit -->
|
|
2
|
+
|
|
3
|
+
# AspectRatio (L1 primitive)
|
|
4
|
+
|
|
5
|
+
**when** Keeping an image/video/embed from shifting the layout while loading.
|
|
6
|
+
|
|
7
|
+
`import { AspectRatio } from "@monkey-mini-app/ui"`
|
|
8
|
+
|
|
9
|
+
`packages/ui/src/components/aspect-ratio.tsx` · family: Layout & structure · type: component · primitive
|
|
10
|
+
|
|
11
|
+
## Parts
|
|
12
|
+
|
|
13
|
+
| part | own props |
|
|
14
|
+
|---|---|
|
|
15
|
+
| `AspectRatio` | `ratio` |
|
|
16
|
+
|
|
17
|
+
_Inherited HTML/ARIA props (`className`, `style`, `id`, `onClick`, `aria-*`, …) omitted — every component takes them._
|
|
18
|
+
|
|
19
|
+
## Examples
|
|
20
|
+
|
|
21
|
+
Runnable files under `references/examples/` — portable by construction (`react` +
|
|
22
|
+
`@monkey-mini-app/ui` + relatives), so copy the closest one into `ui.tsx` / `ui/`.
|
|
23
|
+
Pick by **scenario**, then open the file you need.
|
|
24
|
+
|
|
25
|
+
- **[aspect-ratio-01.tsx](../examples/aspect-ratio/aspect-ratio-01.tsx)** — AspectRatio — A media/skeleton placeholder that must keep a fixed ratio (16/9 here) while its container resizes — prevents layout shift when images or embeds load late.
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
<!-- generated by scripts/
|
|
1
|
+
<!-- generated by scripts/gen/skill — do not edit -->
|
|
2
2
|
|
|
3
3
|
# AttachmentGallery
|
|
4
4
|
|
|
5
|
+
Thumbnail grid of files with open/copy.
|
|
6
|
+
|
|
7
|
+
**when** A record has N files/images and you show them as tiles, not a table.
|
|
8
|
+
|
|
5
9
|
`import { AttachmentGallery, GalleryFile } from "@monkey-mini-app/ui"`
|
|
6
10
|
|
|
7
|
-
`packages/ui/src/blocks/attachment-gallery.tsx` ·
|
|
11
|
+
`packages/ui/src/blocks/attachment-gallery.tsx` · family: Discovery & inspect · type: block
|
|
8
12
|
|
|
9
13
|
## Props
|
|
10
14
|
|
|
@@ -20,3 +24,9 @@
|
|
|
20
24
|
|---|---|:---:|---|
|
|
21
25
|
| `name` | `string` | ✓ | |
|
|
22
26
|
| `url` | `string \| undefined` | | |
|
|
27
|
+
|
|
28
|
+
## Example
|
|
29
|
+
|
|
30
|
+
```tsx
|
|
31
|
+
<AttachmentGallery files={[{ name: "log.txt", url: "https://…" }]} />
|
|
32
|
+
```
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<!-- generated by scripts/gen/skill — do not edit -->
|
|
2
|
+
|
|
3
|
+
# Attachment (L1 primitive)
|
|
4
|
+
|
|
5
|
+
**when** One selected file inside a form. A grid of many → `AttachmentGallery`.
|
|
6
|
+
|
|
7
|
+
Compound: compose the parts below — **do not invent part names**.
|
|
8
|
+
|
|
9
|
+
`import { Attachment, AttachmentAction, AttachmentActions, AttachmentContent, AttachmentDescription, AttachmentGroup, AttachmentMedia, AttachmentTitle, AttachmentTrigger } from "@monkey-mini-app/ui"`
|
|
10
|
+
|
|
11
|
+
`packages/ui/src/components/attachment.tsx` · family: Discovery & inspect · type: component · primitive
|
|
12
|
+
|
|
13
|
+
## Parts
|
|
14
|
+
|
|
15
|
+
| part | own props |
|
|
16
|
+
|---|---|
|
|
17
|
+
| `Attachment` | `orientation?=vertical/horizontal` `size?=default/xs/sm` `state?=error/idle/uploading/processing/done` |
|
|
18
|
+
| `AttachmentAction` | `focusableWhenDisabled?` `nativeButton?` `render?` `size?=default/xs/sm/lg/icon/icon-xs/icon-sm/icon-lg` `variant?=link/default/outline/secondary/ghost/destructive` |
|
|
19
|
+
| `AttachmentActions` | — |
|
|
20
|
+
| `AttachmentContent` | — |
|
|
21
|
+
| `AttachmentDescription` | — |
|
|
22
|
+
| `AttachmentGroup` | — |
|
|
23
|
+
| `AttachmentMedia` | `variant?=image/icon` |
|
|
24
|
+
| `AttachmentTitle` | — |
|
|
25
|
+
| `AttachmentTrigger` | `render?` |
|
|
26
|
+
|
|
27
|
+
_Inherited HTML/ARIA props (`className`, `style`, `id`, `onClick`, `aria-*`, …) omitted — every component takes them._
|
|
28
|
+
|
|
29
|
+
## Examples
|
|
30
|
+
|
|
31
|
+
Runnable files under `references/examples/` — portable by construction (`react` +
|
|
32
|
+
`@monkey-mini-app/ui` + relatives), so copy the closest one into `ui.tsx` / `ui/`.
|
|
33
|
+
Pick by **scenario**, then open the file you need.
|
|
34
|
+
|
|
35
|
+
- **[attachment-01.tsx](../examples/attachment/attachment-01.tsx)** — Attachment — A file chip in a list — icon, name, meta line and a remove affordance; the shape used for uploaded files or chat attachments.
|