@monkey-mini-app/dsh-mini-app 0.1.1 → 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.
Files changed (312) hide show
  1. package/README.md +29 -27
  2. package/lib/client.js +2024 -783
  3. package/lib/index.d.ts +2 -0
  4. package/lib/index.js +20 -7
  5. package/package.json +10 -9
  6. package/skills/monkey-mini-app/SKILL.md +181 -114
  7. package/skills/monkey-mini-app/references/catalog.md +236 -99
  8. package/skills/monkey-mini-app/references/contracts/accordion.md +30 -0
  9. package/skills/monkey-mini-app/references/contracts/activity-feed.md +12 -2
  10. package/skills/monkey-mini-app/references/contracts/alert-dialog.md +38 -0
  11. package/skills/monkey-mini-app/references/contracts/alert.md +38 -0
  12. package/skills/monkey-mini-app/references/contracts/app-shell.md +2 -2
  13. package/skills/monkey-mini-app/references/contracts/aspect-ratio.md +25 -0
  14. package/skills/monkey-mini-app/references/contracts/attachment-gallery.md +12 -2
  15. package/skills/monkey-mini-app/references/contracts/attachment.md +35 -0
  16. package/skills/monkey-mini-app/references/contracts/autocomplete.md +12 -2
  17. package/skills/monkey-mini-app/references/contracts/avatar.md +24 -0
  18. package/skills/monkey-mini-app/references/contracts/badge.md +26 -0
  19. package/skills/monkey-mini-app/references/contracts/breadcrumb.md +33 -0
  20. package/skills/monkey-mini-app/references/contracts/bubble.md +30 -0
  21. package/skills/monkey-mini-app/references/contracts/button-group.md +36 -0
  22. package/skills/monkey-mini-app/references/contracts/button.md +26 -0
  23. package/skills/monkey-mini-app/references/contracts/calendar.md +20 -0
  24. package/skills/monkey-mini-app/references/contracts/card.md +41 -0
  25. package/skills/monkey-mini-app/references/contracts/cascader.md +12 -2
  26. package/skills/monkey-mini-app/references/contracts/chart.md +32 -0
  27. package/skills/monkey-mini-app/references/contracts/checkbox.md +19 -0
  28. package/skills/monkey-mini-app/references/contracts/code-block.md +20 -2
  29. package/skills/monkey-mini-app/references/contracts/code-editor.md +30 -4
  30. package/skills/monkey-mini-app/references/contracts/collapsible.md +21 -0
  31. package/skills/monkey-mini-app/references/contracts/color-picker.md +12 -2
  32. package/skills/monkey-mini-app/references/contracts/combobox.md +34 -0
  33. package/skills/monkey-mini-app/references/contracts/command.md +41 -0
  34. package/skills/monkey-mini-app/references/contracts/comment-thread.md +12 -2
  35. package/skills/monkey-mini-app/references/contracts/commit-graph.md +50 -0
  36. package/skills/monkey-mini-app/references/contracts/confirm-dialog.md +20 -2
  37. package/skills/monkey-mini-app/references/contracts/context-menu.md +41 -0
  38. package/skills/monkey-mini-app/references/contracts/copyable.md +12 -2
  39. package/skills/monkey-mini-app/references/contracts/currency-input.md +12 -2
  40. package/skills/monkey-mini-app/references/contracts/dashboard-shell.md +41 -0
  41. package/skills/monkey-mini-app/references/contracts/data-grid.md +13 -6
  42. package/skills/monkey-mini-app/references/contracts/date-picker.md +20 -2
  43. package/skills/monkey-mini-app/references/contracts/date-range-picker.md +10 -2
  44. package/skills/monkey-mini-app/references/contracts/date-time-picker.md +20 -2
  45. package/skills/monkey-mini-app/references/contracts/date-time-range-picker.md +20 -2
  46. package/skills/monkey-mini-app/references/contracts/description-list.md +12 -2
  47. package/skills/monkey-mini-app/references/contracts/detail-panel.md +10 -2
  48. package/skills/monkey-mini-app/references/contracts/dialog.md +44 -0
  49. package/skills/monkey-mini-app/references/contracts/diff-viewer.md +21 -2
  50. package/skills/monkey-mini-app/references/contracts/donut-chart.md +12 -2
  51. package/skills/monkey-mini-app/references/contracts/drawer.md +29 -0
  52. package/skills/monkey-mini-app/references/contracts/dropdown-menu.md +49 -0
  53. package/skills/monkey-mini-app/references/contracts/duration-input.md +20 -2
  54. package/skills/monkey-mini-app/references/contracts/empty.md +40 -0
  55. package/skills/monkey-mini-app/references/contracts/env-badge.md +12 -2
  56. package/skills/monkey-mini-app/references/contracts/env-table.md +46 -0
  57. package/skills/monkey-mini-app/references/contracts/event-calendar.md +28 -20
  58. package/skills/monkey-mini-app/references/contracts/field.md +34 -0
  59. package/skills/monkey-mini-app/references/contracts/file-dropzone.md +20 -2
  60. package/skills/monkey-mini-app/references/contracts/file-tree.md +12 -2
  61. package/skills/monkey-mini-app/references/contracts/filter-bar.md +2 -2
  62. package/skills/monkey-mini-app/references/contracts/form-sheet.md +51 -0
  63. package/skills/monkey-mini-app/references/contracts/gantt.md +20 -2
  64. package/skills/monkey-mini-app/references/contracts/gauge.md +12 -2
  65. package/skills/monkey-mini-app/references/contracts/hover-card.md +21 -0
  66. package/skills/monkey-mini-app/references/contracts/input-group.md +24 -0
  67. package/skills/monkey-mini-app/references/contracts/input.md +33 -0
  68. package/skills/monkey-mini-app/references/contracts/item.md +36 -0
  69. package/skills/monkey-mini-app/references/contracts/jira-wiki.md +3 -4
  70. package/skills/monkey-mini-app/references/contracts/jql-input.md +15 -8
  71. package/skills/monkey-mini-app/references/contracts/json-viewer.md +20 -2
  72. package/skills/monkey-mini-app/references/contracts/kanban-issue-panel.md +12 -2
  73. package/skills/monkey-mini-app/references/contracts/kanban.md +10 -2
  74. package/skills/monkey-mini-app/references/contracts/kbd.md +20 -0
  75. package/skills/monkey-mini-app/references/contracts/label.md +33 -0
  76. package/skills/monkey-mini-app/references/contracts/list-detail.md +46 -0
  77. package/skills/monkey-mini-app/references/contracts/log-viewer.md +45 -4
  78. package/skills/monkey-mini-app/references/contracts/markdown-editor.md +20 -2
  79. package/skills/monkey-mini-app/references/contracts/markdown.md +12 -2
  80. package/skills/monkey-mini-app/references/contracts/marker.md +30 -0
  81. package/skills/monkey-mini-app/references/contracts/menubar.md +34 -0
  82. package/skills/monkey-mini-app/references/contracts/message-scroller.md +24 -0
  83. package/skills/monkey-mini-app/references/contracts/message.md +24 -0
  84. package/skills/monkey-mini-app/references/contracts/mini-calendar.md +20 -2
  85. package/skills/monkey-mini-app/references/contracts/native-select.md +21 -0
  86. package/skills/monkey-mini-app/references/contracts/navigation-menu.md +27 -0
  87. package/skills/monkey-mini-app/references/contracts/notification-center.md +12 -2
  88. package/skills/monkey-mini-app/references/contracts/number-field.md +20 -2
  89. package/skills/monkey-mini-app/references/contracts/page-header.md +2 -2
  90. package/skills/monkey-mini-app/references/contracts/pagination.md +33 -0
  91. package/skills/monkey-mini-app/references/contracts/password-field.md +12 -2
  92. package/skills/monkey-mini-app/references/contracts/phone-input.md +12 -2
  93. package/skills/monkey-mini-app/references/contracts/popover.md +32 -0
  94. package/skills/monkey-mini-app/references/contracts/progress-ring.md +12 -2
  95. package/skills/monkey-mini-app/references/contracts/progress.md +39 -0
  96. package/skills/monkey-mini-app/references/contracts/questionnaire.md +33 -0
  97. package/skills/monkey-mini-app/references/contracts/radar-chart.md +12 -2
  98. package/skills/monkey-mini-app/references/contracts/radio-group.md +20 -0
  99. package/skills/monkey-mini-app/references/contracts/rating.md +12 -2
  100. package/skills/monkey-mini-app/references/contracts/relative-date-picker.md +20 -2
  101. package/skills/monkey-mini-app/references/contracts/request-inspector.md +12 -2
  102. package/skills/monkey-mini-app/references/contracts/resizable.md +29 -0
  103. package/skills/monkey-mini-app/references/contracts/reveal.md +31 -0
  104. package/skills/monkey-mini-app/references/contracts/rich-text-editor.md +14 -2
  105. package/skills/monkey-mini-app/references/contracts/run-timeline.md +20 -2
  106. package/skills/monkey-mini-app/references/contracts/scroll-area.md +20 -0
  107. package/skills/monkey-mini-app/references/contracts/scrollspy.md +20 -2
  108. package/skills/monkey-mini-app/references/contracts/search-input.md +12 -2
  109. package/skills/monkey-mini-app/references/contracts/select.md +36 -0
  110. package/skills/monkey-mini-app/references/contracts/separator.md +27 -0
  111. package/skills/monkey-mini-app/references/contracts/settings-split.md +53 -0
  112. package/skills/monkey-mini-app/references/contracts/severity-chip.md +12 -2
  113. package/skills/monkey-mini-app/references/contracts/sheet.md +34 -0
  114. package/skills/monkey-mini-app/references/contracts/sidebar.md +42 -0
  115. package/skills/monkey-mini-app/references/contracts/skeleton.md +33 -0
  116. package/skills/monkey-mini-app/references/contracts/slider-range.md +12 -2
  117. package/skills/monkey-mini-app/references/contracts/slider.md +25 -0
  118. package/skills/monkey-mini-app/references/contracts/sortable-list.md +20 -2
  119. package/skills/monkey-mini-app/references/contracts/sparkline.md +12 -2
  120. package/skills/monkey-mini-app/references/contracts/spinner.md +31 -0
  121. package/skills/monkey-mini-app/references/contracts/stacked-bar-chart.md +16 -2
  122. package/skills/monkey-mini-app/references/contracts/stat-card.md +2 -2
  123. package/skills/monkey-mini-app/references/contracts/status-badge.md +2 -2
  124. package/skills/monkey-mini-app/references/contracts/stepper-item.md +39 -0
  125. package/skills/monkey-mini-app/references/contracts/stepper.md +38 -11
  126. package/skills/monkey-mini-app/references/contracts/switch.md +25 -0
  127. package/skills/monkey-mini-app/references/contracts/table-page.md +41 -0
  128. package/skills/monkey-mini-app/references/contracts/table.md +42 -0
  129. package/skills/monkey-mini-app/references/contracts/tabs.md +31 -0
  130. package/skills/monkey-mini-app/references/contracts/tag-input.md +12 -2
  131. package/skills/monkey-mini-app/references/contracts/terminal.md +13 -2
  132. package/skills/monkey-mini-app/references/contracts/test-step-list.md +12 -2
  133. package/skills/monkey-mini-app/references/contracts/textarea.md +25 -0
  134. package/skills/monkey-mini-app/references/contracts/time-picker.md +18 -2
  135. package/skills/monkey-mini-app/references/contracts/time-range-picker.md +20 -2
  136. package/skills/monkey-mini-app/references/contracts/time-wheel.md +6 -2
  137. package/skills/monkey-mini-app/references/contracts/timeline.md +20 -2
  138. package/skills/monkey-mini-app/references/contracts/timezone-select.md +20 -2
  139. package/skills/monkey-mini-app/references/contracts/toast.md +39 -0
  140. package/skills/monkey-mini-app/references/contracts/toggle-group.md +28 -0
  141. package/skills/monkey-mini-app/references/contracts/toggle.md +26 -0
  142. package/skills/monkey-mini-app/references/contracts/tooltip.md +30 -0
  143. package/skills/monkey-mini-app/references/contracts/transfer.md +12 -2
  144. package/skills/monkey-mini-app/references/contracts/tree-view.md +20 -2
  145. package/skills/monkey-mini-app/references/contracts/trend-card.md +12 -2
  146. package/skills/monkey-mini-app/references/contracts/user-picker.md +12 -2
  147. package/skills/monkey-mini-app/references/contracts/wizard-shell.md +56 -0
  148. package/skills/monkey-mini-app/references/ctx.md +123 -53
  149. package/skills/monkey-mini-app/references/eval.md +115 -0
  150. package/skills/monkey-mini-app/references/examples/alert/alert-01.tsx +17 -0
  151. package/skills/monkey-mini-app/references/examples/aspect-ratio/aspect-ratio-01.tsx +16 -0
  152. package/skills/monkey-mini-app/references/examples/attachment/attachment-01.tsx +19 -0
  153. package/skills/monkey-mini-app/references/examples/breadcrumb/breadcrumb-01.tsx +31 -0
  154. package/skills/monkey-mini-app/references/examples/bubble/bubble-01.tsx +16 -0
  155. package/skills/monkey-mini-app/references/examples/button-group/button-group-01.tsx +23 -0
  156. package/skills/monkey-mini-app/references/examples/card/card-01.tsx +19 -0
  157. package/skills/monkey-mini-app/references/examples/charts-blocks.md +15 -0
  158. package/skills/monkey-mini-app/references/examples/code-block/code-block-01.tsx +14 -0
  159. package/skills/monkey-mini-app/references/examples/code-editor/code-editor-01.tsx +15 -0
  160. package/skills/monkey-mini-app/references/examples/command/command-01.tsx +30 -0
  161. package/skills/monkey-mini-app/references/examples/confirm-dialog/confirm-dialog-01.tsx +33 -0
  162. package/skills/monkey-mini-app/references/examples/context-menu/context-menu-01.tsx +29 -0
  163. package/skills/monkey-mini-app/references/examples/dashboard-shell/dashboard-shell-01.tsx +78 -0
  164. package/skills/monkey-mini-app/references/examples/data-grid/data-grid-01.tsx +34 -0
  165. package/skills/monkey-mini-app/references/examples/data-grid/data-grid-02.tsx +88 -0
  166. package/skills/monkey-mini-app/references/examples/date-picker/date-picker-01.tsx +14 -0
  167. package/skills/monkey-mini-app/references/examples/date-range-picker/date-range-picker-01.tsx +14 -0
  168. package/skills/monkey-mini-app/references/examples/date-time-picker/date-time-picker-01.tsx +16 -0
  169. package/skills/monkey-mini-app/references/examples/date-time-range-picker/date-time-range-picker-01.tsx +15 -0
  170. package/skills/monkey-mini-app/references/examples/detail-panel/detail-panel-01.tsx +21 -0
  171. package/skills/monkey-mini-app/references/examples/dialog/dialog-01.tsx +30 -0
  172. package/skills/monkey-mini-app/references/examples/diff-viewer/diff-viewer-01.tsx +10 -0
  173. package/skills/monkey-mini-app/references/examples/dropdown-menu/dropdown-menu-01.tsx +31 -0
  174. package/skills/monkey-mini-app/references/examples/duration-input/duration-input-01.tsx +20 -0
  175. package/skills/monkey-mini-app/references/examples/editors.md +11 -0
  176. package/skills/monkey-mini-app/references/examples/empty/empty-01.tsx +19 -0
  177. package/skills/monkey-mini-app/references/examples/event-calendar/event-calendar-01.tsx +53 -0
  178. package/skills/monkey-mini-app/references/examples/file-dropzone/file-dropzone-01.tsx +14 -0
  179. package/skills/monkey-mini-app/references/examples/form-sheet/form-sheet-01.tsx +85 -0
  180. package/skills/monkey-mini-app/references/examples/forms.md +16 -0
  181. package/skills/monkey-mini-app/references/examples/gantt/gantt-01.tsx +29 -0
  182. package/skills/monkey-mini-app/references/examples/input/input-01.tsx +10 -0
  183. package/skills/monkey-mini-app/references/examples/item/item-01.tsx +19 -0
  184. package/skills/monkey-mini-app/references/examples/jql-input/jql-input-01.tsx +33 -0
  185. package/skills/monkey-mini-app/references/examples/json-viewer/json-viewer-01.tsx +10 -0
  186. package/skills/monkey-mini-app/references/examples/kanban/kanban-01.tsx +60 -0
  187. package/skills/monkey-mini-app/references/examples/label/label-01.tsx +10 -0
  188. package/skills/monkey-mini-app/references/examples/list-detail/list-detail-01.tsx +117 -0
  189. package/skills/monkey-mini-app/references/examples/log-viewer/log-viewer-01.tsx +20 -0
  190. package/skills/monkey-mini-app/references/examples/markdown-editor/markdown-editor-01.tsx +18 -0
  191. package/skills/monkey-mini-app/references/examples/marker/marker-01.tsx +16 -0
  192. package/skills/monkey-mini-app/references/examples/mini-calendar/mini-calendar-01.tsx +14 -0
  193. package/skills/monkey-mini-app/references/examples/misc-charts-blocks/misc-charts-blocks-01.tsx +20 -0
  194. package/skills/monkey-mini-app/references/examples/misc-charts-blocks/misc-charts-blocks-02.tsx +32 -0
  195. package/skills/monkey-mini-app/references/examples/misc-charts-blocks/misc-charts-blocks-03.tsx +47 -0
  196. package/skills/monkey-mini-app/references/examples/misc-charts-blocks/misc-charts-blocks-04.tsx +20 -0
  197. package/skills/monkey-mini-app/references/examples/misc-charts-blocks/misc-charts-blocks-05.tsx +24 -0
  198. package/skills/monkey-mini-app/references/examples/misc-charts-blocks/misc-charts-blocks-06.tsx +89 -0
  199. package/skills/monkey-mini-app/references/examples/misc-editors/misc-editors-01.tsx +114 -0
  200. package/skills/monkey-mini-app/references/examples/misc-editors/misc-editors-02.tsx +33 -0
  201. package/skills/monkey-mini-app/references/examples/misc-forms/misc-forms-01.tsx +22 -0
  202. package/skills/monkey-mini-app/references/examples/misc-forms/misc-forms-02.tsx +37 -0
  203. package/skills/monkey-mini-app/references/examples/misc-forms/misc-forms-03.tsx +42 -0
  204. package/skills/monkey-mini-app/references/examples/misc-forms/misc-forms-04.tsx +25 -0
  205. package/skills/monkey-mini-app/references/examples/misc-forms/misc-forms-05.tsx +27 -0
  206. package/skills/monkey-mini-app/references/examples/misc-forms/misc-forms-06.tsx +33 -0
  207. package/skills/monkey-mini-app/references/examples/misc-forms/misc-forms-07.tsx +44 -0
  208. package/skills/monkey-mini-app/references/examples/misc-overlays/misc-overlays-01.tsx +43 -0
  209. package/skills/monkey-mini-app/references/examples/misc-overlays/misc-overlays-02.tsx +38 -0
  210. package/skills/monkey-mini-app/references/examples/misc-primitives/misc-primitives-01.tsx +21 -0
  211. package/skills/monkey-mini-app/references/examples/misc-primitives/misc-primitives-02.tsx +52 -0
  212. package/skills/monkey-mini-app/references/examples/misc-primitives/misc-primitives-03.tsx +44 -0
  213. package/skills/monkey-mini-app/references/examples/number-field/number-field-01.tsx +22 -0
  214. package/skills/monkey-mini-app/references/examples/overlays.md +11 -0
  215. package/skills/monkey-mini-app/references/examples/pagination/pagination-01.tsx +51 -0
  216. package/skills/monkey-mini-app/references/examples/primitives.md +12 -0
  217. package/skills/monkey-mini-app/references/examples/progress/progress-01.tsx +10 -0
  218. package/skills/monkey-mini-app/references/examples/relative-date-picker/relative-date-picker-01.tsx +19 -0
  219. package/skills/monkey-mini-app/references/examples/rich-text-editor/rich-text-editor-01.tsx +15 -0
  220. package/skills/monkey-mini-app/references/examples/run-timeline/run-timeline-01.tsx +17 -0
  221. package/skills/monkey-mini-app/references/examples/scrollspy/scrollspy-01.tsx +29 -0
  222. package/skills/monkey-mini-app/references/examples/separator/separator-01.tsx +10 -0
  223. package/skills/monkey-mini-app/references/examples/settings-split/settings-split-01.tsx +84 -0
  224. package/skills/monkey-mini-app/references/examples/shared/jira-wiki-sample.ts +38 -0
  225. package/skills/monkey-mini-app/references/examples/skeleton/skeleton-01.tsx +10 -0
  226. package/skills/monkey-mini-app/references/examples/slider/slider-01.tsx +22 -0
  227. package/skills/monkey-mini-app/references/examples/sortable-list/sortable-list-01.tsx +18 -0
  228. package/skills/monkey-mini-app/references/examples/spinner/spinner-01.tsx +10 -0
  229. package/skills/monkey-mini-app/references/examples/stepper/stepper-01.tsx +41 -0
  230. package/skills/monkey-mini-app/references/examples/table/table-01.tsx +25 -0
  231. package/skills/monkey-mini-app/references/examples/table-page/table-page-01.tsx +103 -0
  232. package/skills/monkey-mini-app/references/examples/time-picker/time-picker-01.tsx +19 -0
  233. package/skills/monkey-mini-app/references/examples/time-range-picker/time-range-picker-01.tsx +14 -0
  234. package/skills/monkey-mini-app/references/examples/timeline/timeline-01.tsx +18 -0
  235. package/skills/monkey-mini-app/references/examples/timezone-select/timezone-select-01.tsx +15 -0
  236. package/skills/monkey-mini-app/references/examples/toggle/toggle-01.tsx +20 -0
  237. package/skills/monkey-mini-app/references/examples/toggle-group/toggle-group-01.tsx +22 -0
  238. package/skills/monkey-mini-app/references/examples/tree-view/tree-view-01.tsx +25 -0
  239. package/skills/monkey-mini-app/references/examples/wizard-shell/wizard-shell-01.tsx +58 -0
  240. package/skills/monkey-mini-app/references/history.md +23 -7
  241. package/skills/monkey-mini-app/references/icons.md +99 -69
  242. package/skills/monkey-mini-app/references/llm-json.md +39 -26
  243. package/skills/monkey-mini-app/references/loader.md +47 -20
  244. package/skills/monkey-mini-app/references/looks/aurora-bento.md +88 -0
  245. package/skills/monkey-mini-app/references/looks/desk-split.md +89 -0
  246. package/skills/monkey-mini-app/references/looks/editorial.md +78 -0
  247. package/skills/monkey-mini-app/references/looks/glass-island.md +90 -0
  248. package/skills/monkey-mini-app/references/looks/index.md +18 -0
  249. package/skills/monkey-mini-app/references/looks/signage.md +74 -0
  250. package/skills/monkey-mini-app/references/looks/tape.md +22 -0
  251. package/skills/monkey-mini-app/references/looks/terminal.md +88 -0
  252. package/skills/monkey-mini-app/references/looks/void.md +22 -0
  253. package/skills/monkey-mini-app/references/styling.md +189 -0
  254. package/skills/monkey-mini-app/references/test.md +12 -12
  255. package/skills/monkey-mini-app/references/theme.md +197 -0
  256. package/skills/monkey-mini-app/references/tools.md +12 -12
  257. package/skills/monkey-mini-app/references/troubleshoot.md +165 -12
  258. package/skills/monkey-mini-app/templates/README.md +33 -21
  259. package/skills/monkey-mini-app/templates/{jira → board}/main.api.ts +11 -11
  260. package/skills/monkey-mini-app/templates/board/manifest.json +8 -0
  261. package/skills/monkey-mini-app/templates/board/theme.css +46 -0
  262. package/skills/monkey-mini-app/templates/board/ui.tsx +546 -0
  263. package/skills/monkey-mini-app/templates/chores/main.api.ts +35 -0
  264. package/skills/monkey-mini-app/templates/chores/manifest.json +8 -0
  265. package/skills/monkey-mini-app/templates/chores/theme.css +46 -0
  266. package/skills/monkey-mini-app/templates/chores/ui.tsx +117 -0
  267. package/skills/monkey-mini-app/templates/minimal/main.api.ts +5 -5
  268. package/skills/monkey-mini-app/templates/minimal/manifest.json +1 -2
  269. package/skills/monkey-mini-app/templates/minimal/ui.tsx +17 -8
  270. package/skills/monkey-mini-app/templates/radar/api/scan.ts +79 -0
  271. package/skills/monkey-mini-app/templates/radar/main.api.ts +29 -0
  272. package/skills/monkey-mini-app/templates/radar/manifest.json +8 -0
  273. package/skills/monkey-mini-app/templates/radar/shared/events.ts +25 -0
  274. package/skills/monkey-mini-app/templates/{insights/lib → radar/shared}/sample.ts +1 -1
  275. package/skills/monkey-mini-app/templates/radar/theme.css +47 -0
  276. package/skills/monkey-mini-app/templates/radar/ui/brief.tsx +31 -0
  277. package/skills/monkey-mini-app/templates/radar/ui.tsx +131 -0
  278. package/skills/monkey-mini-app/templates/runner/main.api.ts +91 -0
  279. package/skills/monkey-mini-app/templates/runner/manifest.json +8 -0
  280. package/skills/monkey-mini-app/templates/runner/shared/events.ts +14 -0
  281. package/skills/monkey-mini-app/templates/runner/theme.css +46 -0
  282. package/skills/monkey-mini-app/templates/runner/ui.tsx +213 -0
  283. package/skills/monkey-mini-app/templates/sheets/main.api.ts +276 -0
  284. package/skills/monkey-mini-app/templates/sheets/manifest.json +8 -0
  285. package/skills/monkey-mini-app/templates/sheets/theme.css +46 -0
  286. package/skills/monkey-mini-app/templates/sheets/ui.tsx +419 -0
  287. package/skills/monkey-mini-app/templates/{todo → today}/main.api.ts +8 -8
  288. package/skills/monkey-mini-app/templates/today/manifest.json +8 -0
  289. package/skills/monkey-mini-app/templates/today/theme.css +45 -0
  290. package/skills/monkey-mini-app/templates/today/ui/item-row.tsx +25 -0
  291. package/skills/monkey-mini-app/templates/today/ui.tsx +406 -0
  292. package/skills/monkey-mini-app/templates/{monitor → watch}/main.api.ts +8 -8
  293. package/skills/monkey-mini-app/templates/watch/manifest.json +8 -0
  294. package/skills/monkey-mini-app/templates/watch/ui.tsx +187 -0
  295. package/skills/monkey-mini-app/tsconfig.json +31 -0
  296. package/skills/monkey-mini-app/types/cdn.d.ts +1 -0
  297. package/tsup.config.ts +1 -0
  298. package/skills/monkey-mini-app/templates/agentrun/main.api.ts +0 -78
  299. package/skills/monkey-mini-app/templates/agentrun/manifest.json +0 -9
  300. package/skills/monkey-mini-app/templates/agentrun/ui.tsx +0 -125
  301. package/skills/monkey-mini-app/templates/insights/main.api.ts +0 -101
  302. package/skills/monkey-mini-app/templates/insights/manifest.json +0 -9
  303. package/skills/monkey-mini-app/templates/insights/ui.tsx +0 -138
  304. package/skills/monkey-mini-app/templates/jira/manifest.json +0 -9
  305. package/skills/monkey-mini-app/templates/jira/ui.tsx +0 -318
  306. package/skills/monkey-mini-app/templates/monitor/manifest.json +0 -9
  307. package/skills/monkey-mini-app/templates/monitor/ui.tsx +0 -176
  308. package/skills/monkey-mini-app/templates/review/main.api.ts +0 -68
  309. package/skills/monkey-mini-app/templates/review/manifest.json +0 -9
  310. package/skills/monkey-mini-app/templates/review/ui.tsx +0 -159
  311. package/skills/monkey-mini-app/templates/todo/manifest.json +0 -8
  312. package/skills/monkey-mini-app/templates/todo/ui.tsx +0 -177
@@ -1,10 +1,14 @@
1
- <!-- generated by scripts/generate-skill.mjs — do not edit -->
1
+ <!-- generated by scripts/gen/skill — do not edit -->
2
2
 
3
3
  # ConfirmDialog
4
4
 
5
+ Controlled yes/no dialog with loading-safe confirm.
6
+
7
+ **when** Any destructive action. Needs a form inside → compose `Dialog` yourself.
8
+
5
9
  `import { ConfirmDialog } from "@monkey-mini-app/ui"`
6
10
 
7
- `packages/ui/src/composites/confirm-dialog.tsx` · composites
11
+ `packages/ui/src/composites/confirm-dialog.tsx` · family: Surface · type: composite
8
12
 
9
13
  ## Props
10
14
 
@@ -17,3 +21,17 @@
17
21
  | `onOpenChange` | `(open: boolean) => void` | ✓ | |
18
22
  | `open` | `boolean` | ✓ | |
19
23
  | `title` | `string` | ✓ | |
24
+
25
+ ## Example
26
+
27
+ ```tsx
28
+ <ConfirmDialog open={open} title="删除这条?" onConfirm={remove} onOpenChange={setOpen} />
29
+ ```
30
+
31
+ ## Examples
32
+
33
+ Runnable files under `references/examples/` — portable by construction (`react` +
34
+ `@monkey-mini-app/ui` + relatives), so copy the closest one into `ui.tsx` / `ui/`.
35
+ Pick by **scenario**, then open the file you need.
36
+
37
+ - **[confirm-dialog-01.tsx](../examples/confirm-dialog/confirm-dialog-01.tsx)** — ConfirmDialog / Toast — Destructive-action guard — one click opens a yes/no dialog, cancel keeps state; pair with toast for the result. Do not hand-roll a Dialog for confirmations.
@@ -0,0 +1,41 @@
1
+ <!-- generated by scripts/gen/skill — do not edit -->
2
+
3
+ # ContextMenu (L1 primitive)
4
+
5
+ **when** Row/canvas operations. Trigger-button actions → `DropdownMenu`.
6
+
7
+ Compound: compose the parts below — **do not invent part names**.
8
+
9
+ `import { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger } from "@monkey-mini-app/ui"`
10
+
11
+ `packages/ui/src/components/context-menu.tsx` · family: Navigation · type: component · primitive
12
+
13
+ ## Parts
14
+
15
+ | part | own props |
16
+ |---|---|
17
+ | `ContextMenu` | `actionsRef?` `closeParentOnEsc?` `defaultOpen?` `disabled?` `highlightItemOnHover?` `loopFocus?` `onOpenChange?` `onOpenChangeComplete?` `open?` `orientation?` |
18
+ | `ContextMenuCheckboxItem` | `checked?` `closeOnClick?` `disabled?` `inset?` `label?` `nativeButton?` `onCheckedChange?` `render?` |
19
+ | `ContextMenuContent` | `align?` `alignOffset?` `finalFocus?` `render?` `side?` `sideOffset?` |
20
+ | `ContextMenuGroup` | `render?` |
21
+ | `ContextMenuItem` | `closeOnClick?` `disabled?` `inset?` `label?` `nativeButton?` `render?` `variant?=default/destructive` |
22
+ | `ContextMenuLabel` | `inset?` `render?` |
23
+ | `ContextMenuPortal` | `container?` `keepMounted?` `render?` |
24
+ | `ContextMenuRadioGroup` | `disabled?` `onValueChange?` `render?` `value?` |
25
+ | `ContextMenuRadioItem` | `closeOnClick?` `disabled?` `inset?` `label?` `nativeButton?` `render?` `value` |
26
+ | `ContextMenuSeparator` | `orientation?` `render?` |
27
+ | `ContextMenuShortcut` | — |
28
+ | `ContextMenuSub` | `actionsRef?` `closeParentOnEsc?` `defaultOpen?` `disabled?` `highlightItemOnHover?` `loopFocus?` `onOpenChange?` `onOpenChangeComplete?` `open?` `orientation?` |
29
+ | `ContextMenuSubContent` | `align?` `alignOffset?` `finalFocus?` `render?` `side?` `sideOffset?` |
30
+ | `ContextMenuSubTrigger` | `closeDelay?` `delay?` `disabled?` `inset?` `label?` `nativeButton?` `openOnHover?` `render?` |
31
+ | `ContextMenuTrigger` | `render?` |
32
+
33
+ _Inherited HTML/ARIA props (`className`, `style`, `id`, `onClick`, `aria-*`, …) omitted — every component takes them._
34
+
35
+ ## Examples
36
+
37
+ Runnable files under `references/examples/` — portable by construction (`react` +
38
+ `@monkey-mini-app/ui` + relatives), so copy the closest one into `ui.tsx` / `ui/`.
39
+ Pick by **scenario**, then open the file you need.
40
+
41
+ - **[context-menu-01.tsx](../examples/context-menu/context-menu-01.tsx)** — ContextMenu — Right-click menu bound to a region (a row, a canvas cell) with grouped items and separators.
@@ -1,13 +1,23 @@
1
- <!-- generated by scripts/generate-skill.mjs — do not edit -->
1
+ <!-- generated by scripts/gen/skill — do not edit -->
2
2
 
3
3
  # Copyable
4
4
 
5
+ Inline text with a copy button.
6
+
7
+ **when** IDs, hashes, URLs, tokens the user pastes elsewhere.
8
+
5
9
  `import { Copyable } from "@monkey-mini-app/ui"`
6
10
 
7
- `packages/ui/src/composites/copyable.tsx` · composites
11
+ `packages/ui/src/composites/copyable.tsx` · family: Discovery & inspect · type: composite
8
12
 
9
13
  ## Props
10
14
 
11
15
  | field | type | required | note |
12
16
  |---|---|:---:|---|
13
17
  | `value` | `string` | ✓ | |
18
+
19
+ ## Example
20
+
21
+ ```tsx
22
+ <Copyable value="i_1724918400" />
23
+ ```
@@ -1,10 +1,14 @@
1
- <!-- generated by scripts/generate-skill.mjs — do not edit -->
1
+ <!-- generated by scripts/gen/skill — do not edit -->
2
2
 
3
3
  # CurrencyInput
4
4
 
5
+ Amount input with grouping + currency prefix.
6
+
7
+ **when** Money fields; keeps the raw string out of your state.
8
+
5
9
  `import { CurrencyInput } from "@monkey-mini-app/ui"`
6
10
 
7
- `packages/ui/src/composites/currency-input.tsx` · composites
11
+ `packages/ui/src/composites/currency-input.tsx` · family: Form · type: composite
8
12
 
9
13
  ## Props
10
14
 
@@ -13,3 +17,9 @@
13
17
  | `currency` | `string \| undefined` | | |
14
18
  | `onChange` | `((value: string) => void) \| undefined` | | |
15
19
  | `value` | `string \| undefined` | | |
20
+
21
+ ## Example
22
+
23
+ ```tsx
24
+ <CurrencyInput currency="CNY" onChange={(v) => set(v)} />
25
+ ```
@@ -0,0 +1,41 @@
1
+ <!-- generated by scripts/gen/skill — do not edit -->
2
+
3
+ # DashboardShell
4
+
5
+ Overview page with a pinned header + KPI strip and exactly one scrolling body. The failure this exists for: the page is a plain column, `overflow-auto` ends up on the outermost div, and the first chart the user scrolls past takes the header and the KPI row with it — a dashboard whose numbers scroll away is not a dashboard. The aside gets its own scroller when there is room for two, and folds under `main` into the single body scroller when there is not, rather than becoming a third half-height pane.
6
+
7
+ **when** Page shape: metrics up top, charts below, optional activity rail — ops overviews, monitor walls
8
+
9
+ `import { DashboardShell } from "@monkey-mini-app/ui"`
10
+
11
+ `packages/ui/src/blocks/dashboard-shell.tsx` · family: Layout & structure · type: block
12
+
13
+ ## Props
14
+
15
+ | field | type | required | note |
16
+ |---|---|:---:|---|
17
+ | `aside` | `ReactNode` | | Activity feed / top offenders. Sits beside `main` on wide screens, stacks under it when narrow. |
18
+ | `asideWidth` | `number \| undefined` | | Aside width in px on wide screens. Default 320. |
19
+ | `className` | `string \| undefined` | | |
20
+ | `header` | `ReactNode` | | Title row / `PageHeader`. Pinned: it stays while the content scrolls under it. |
21
+ | `kpis` | `ReactNode` | | KPI strip. Pinned with the header — the point of a dashboard is that the numbers hold. |
22
+ | `main` | `ReactNode` | ✓ | Charts and tables. The scrolling body. |
23
+
24
+ ## Example
25
+
26
+ ```tsx
27
+ <DashboardShell
28
+ header={<PageHeader title="值班" description="每 5 秒" />}
29
+ kpis={<div className="grid grid-cols-4 gap-3">{cards}</div>}
30
+ main={<Charts />}
31
+ aside={<ActivityFeed items={items} />}
32
+ />
33
+ ```
34
+
35
+ ## Examples
36
+
37
+ Runnable files under `references/examples/` — portable by construction (`react` +
38
+ `@monkey-mini-app/ui` + relatives), so copy the closest one into `ui.tsx` / `ui/`.
39
+ Pick by **scenario**, then open the file you need.
40
+
41
+ - **[dashboard-shell-01.tsx](../examples/dashboard-shell/dashboard-shell-01.tsx)** — DashboardShell — Ops overview in a fixed-height panel: the header and KPI strip stay pinned while the charts scroll, and the activity rail scrolls on its own beside them. — _*Scroll the chart column — the numbers stay; narrow the panel and the rail folds underneath*_
@@ -1,4 +1,4 @@
1
- <!-- generated by scripts/generate-skill.mjs — do not edit -->
1
+ <!-- generated by scripts/gen/skill — do not edit -->
2
2
 
3
3
  # DataGrid
4
4
 
@@ -8,7 +8,7 @@ Product table: sort, column filter popover, global search, pagination.
8
8
 
9
9
  `import { DataGrid, SearchVariant, DataGridColumnMeta, DataGridFeatures } from "@monkey-mini-app/ui"`
10
10
 
11
- `packages/ui/src/products/data-grid.tsx` · products
11
+ `packages/ui/src/products/data-grid.tsx` · family: Data & tables · type: product
12
12
 
13
13
  ## Props
14
14
 
@@ -47,9 +47,7 @@ Product table: sort, column filter popover, global search, pagination.
47
47
 
48
48
  | field | type | required | note |
49
49
  |---|---|:---:|---|
50
- | `autoResetPageIndex` | `boolean \| undefined` | | TanStack `autoResetPageIndex` — reset to page 1 when the `data` array
51
- reference changes (default true). Turn off for inline edits / appends that
52
- must keep the current page; pair with a `key` remount for structural loads. |
50
+ | `autoResetPageIndex` | `boolean \| undefined` | | TanStack `autoResetPageIndex` — reset to page 1 when the `data` array reference changes (default true). Turn off for inline edits / appends that must keep the current page; pair with a `key` remount for structural loads. |
53
51
  | `columnResize` | `boolean \| undefined` | | |
54
52
  | `columnSearch` | `boolean \| undefined` | | |
55
53
  | `columnVisibility` | `boolean \| undefined` | | |
@@ -83,5 +81,14 @@ const [page, setPage] = useState(0)
83
81
  pageIndex={page}
84
82
  onPageIndexChange={setPage}
85
83
  />
86
- // “回到第 1 页”按钮:setPage(0);结构性重载也可用 key 重挂
84
+ // “back to page 1 button: setPage(0); for a structural reload you can also remount via key
87
85
  ```
86
+
87
+ ## Examples
88
+
89
+ Runnable files under `references/examples/` — portable by construction (`react` +
90
+ `@monkey-mini-app/ui` + relatives), so copy the closest one into `ui.tsx` / `ui/`.
91
+ Pick by **scenario**, then open the file you need.
92
+
93
+ - **[data-grid-01.tsx](../examples/data-grid/data-grid-01.tsx)** — DataGrid — The default table for anything bigger than a static list: column sort (asc→desc→off), global search box, pagination — all from props, no external state library. — _*Sort cycles asc → desc → none*_
94
+ - **[data-grid-02.tsx](../examples/data-grid/data-grid-02.tsx)** — DataGrid · custom cells — Same grid but the columns render rich cells (avatar, progress bar, status badge) via cell renderers — the pattern for 'run list' style screens. — _*Avatar, progress, badges, row expand, selection, CSV*_
@@ -1,10 +1,14 @@
1
- <!-- generated by scripts/generate-skill.mjs — do not edit -->
1
+ <!-- generated by scripts/gen/skill — do not edit -->
2
2
 
3
3
  # DatePicker
4
4
 
5
+ Single calendar date (day precision).
6
+
7
+ **when** Filtering or storing one day. With a clock → `DateTimePicker`.
8
+
5
9
  `import { DatePicker } from "@monkey-mini-app/ui"`
6
10
 
7
- `packages/ui/src/composites/date-picker.tsx` · composites
11
+ `packages/ui/src/composites/date-picker.tsx` · family: Calendar & date · type: composite
8
12
 
9
13
  ## Props
10
14
 
@@ -15,3 +19,17 @@
15
19
  | `onChange` | `((date: Date \| undefined) => void) \| undefined` | | |
16
20
  | `placeholder` | `string \| undefined` | | |
17
21
  | `value` | `Date \| undefined` | | |
22
+
23
+ ## Example
24
+
25
+ ```tsx
26
+ <DatePicker value={d} onChange={(v) => set(v)} />
27
+ ```
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
+ - **[date-picker-01.tsx](../examples/date-picker/date-picker-01.tsx)** — DatePicker — Pick a single calendar date; popover trigger shows the formatted value and supports clearing.
@@ -1,4 +1,4 @@
1
- <!-- generated by scripts/generate-skill.mjs — do not edit -->
1
+ <!-- generated by scripts/gen/skill — do not edit -->
2
2
 
3
3
  # DateRangePicker
4
4
 
@@ -8,7 +8,7 @@ Popover date range with month/year chrome.
8
8
 
9
9
  `import { DateRangePicker } from "@monkey-mini-app/ui"`
10
10
 
11
- `packages/ui/src/composites/date-range-picker.tsx` · composites
11
+ `packages/ui/src/composites/date-range-picker.tsx` · family: Calendar & date · type: composite
12
12
 
13
13
  ## Props
14
14
 
@@ -24,3 +24,11 @@ Popover date range with month/year chrome.
24
24
  ```tsx
25
25
  <DateRangePicker value={range} onChange={setRange} />
26
26
  ```
27
+
28
+ ## Examples
29
+
30
+ Runnable files under `references/examples/` — portable by construction (`react` +
31
+ `@monkey-mini-app/ui` + relatives), so copy the closest one into `ui.tsx` / `ui/`.
32
+ Pick by **scenario**, then open the file you need.
33
+
34
+ - **[date-range-picker-01.tsx](../examples/date-range-picker/date-range-picker-01.tsx)** — DateRangePicker — Pick from/to as one value — one popover, both endpoints validated together, so you never re-check 'to > from' yourself.
@@ -1,10 +1,14 @@
1
- <!-- generated by scripts/generate-skill.mjs — do not edit -->
1
+ <!-- generated by scripts/gen/skill — do not edit -->
2
2
 
3
3
  # DateTimePicker
4
4
 
5
+ Date + time, optional timezone.
6
+
7
+ **when** Scheduling moments, not days.
8
+
5
9
  `import { DateTimePicker } from "@monkey-mini-app/ui"`
6
10
 
7
- `packages/ui/src/composites/date-time-picker.tsx` · composites
11
+ `packages/ui/src/composites/date-time-picker.tsx` · family: Calendar & date · type: composite
8
12
 
9
13
  ## Props
10
14
 
@@ -16,3 +20,17 @@
16
20
  | `placeholder` | `string \| undefined` | | |
17
21
  | `timezone` | `string \| undefined` | | |
18
22
  | `value` | `Date \| undefined` | | |
23
+
24
+ ## Example
25
+
26
+ ```tsx
27
+ <DateTimePicker value={d} onChange={(v) => set(v)} />
28
+ ```
29
+
30
+ ## Examples
31
+
32
+ Runnable files under `references/examples/` — portable by construction (`react` +
33
+ `@monkey-mini-app/ui` + relatives), so copy the closest one into `ui.tsx` / `ui/`.
34
+ Pick by **scenario**, then open the file you need.
35
+
36
+ - **[date-time-picker-01.tsx](../examples/date-time-picker/date-time-picker-01.tsx)** — DateTimePicker — Date + time + timezone edited as a single value in one popover, for scheduling where the zone matters (CI triggers, shifts). — _*One popover: calendar + time*_
@@ -1,10 +1,14 @@
1
- <!-- generated by scripts/generate-skill.mjs — do not edit -->
1
+ <!-- generated by scripts/gen/skill — do not edit -->
2
2
 
3
3
  # DateTimeRangePicker
4
4
 
5
+ From/to moments, all-day toggle.
6
+
7
+ **when** Run windows, on-call shifts.
8
+
5
9
  `import { DateTimeRangePicker, DateTimeRange } from "@monkey-mini-app/ui"`
6
10
 
7
- `packages/ui/src/composites/date-time-range-picker.tsx` · composites
11
+ `packages/ui/src/composites/date-time-range-picker.tsx` · family: Calendar & date · type: composite
8
12
 
9
13
  ## Props
10
14
 
@@ -22,3 +26,17 @@
22
26
  |---|---|:---:|---|
23
27
  | `end` | `Date \| undefined` | | |
24
28
  | `start` | `Date \| undefined` | | |
29
+
30
+ ## Example
31
+
32
+ ```tsx
33
+ <DateTimeRangePicker onChange={(r) => set(r)} />
34
+ ```
35
+
36
+ ## Examples
37
+
38
+ Runnable files under `references/examples/` — portable by construction (`react` +
39
+ `@monkey-mini-app/ui` + relatives), so copy the closest one into `ui.tsx` / `ui/`.
40
+ Pick by **scenario**, then open the file you need.
41
+
42
+ - **[date-time-range-picker-01.tsx](../examples/date-time-range-picker/date-time-range-picker-01.tsx)** — DateTimeRangePicker — A time span with both endpoints at day+time precision (log/incident investigation windows). — _*Two DateTimePickers; allDay switches to a date range*_
@@ -1,13 +1,23 @@
1
- <!-- generated by scripts/generate-skill.mjs — do not edit -->
1
+ <!-- generated by scripts/gen/skill — do not edit -->
2
2
 
3
3
  # DescriptionList
4
4
 
5
+ Label/value pairs, two columns.
6
+
7
+ **when** Detail/inspector panel of a selected row — the default “show one record” view.
8
+
5
9
  `import { DescriptionList } from "@monkey-mini-app/ui"`
6
10
 
7
- `packages/ui/src/blocks/description-list.tsx` · blocks
11
+ `packages/ui/src/blocks/description-list.tsx` · family: Layout & structure · type: block
8
12
 
9
13
  ## Props
10
14
 
11
15
  | field | type | required | note |
12
16
  |---|---|:---:|---|
13
17
  | `items` | `{ label: string; value: string; }[]` | ✓ | |
18
+
19
+ ## Example
20
+
21
+ ```tsx
22
+ <DescriptionList items={[{ label: "状态", value: "运行中" }]} />
23
+ ```
@@ -1,4 +1,4 @@
1
- <!-- generated by scripts/generate-skill.mjs — do not edit -->
1
+ <!-- generated by scripts/gen/skill — do not edit -->
2
2
 
3
3
  # DetailPanel
4
4
 
@@ -8,7 +8,7 @@ Right-side inspector Sheet for a selected row/entity.
8
8
 
9
9
  `import { DetailPanel } from "@monkey-mini-app/ui"`
10
10
 
11
- `packages/ui/src/blocks/detail-panel.tsx` · blocks
11
+ `packages/ui/src/blocks/detail-panel.tsx` · family: Surface · type: block
12
12
 
13
13
  ## Props
14
14
 
@@ -25,3 +25,11 @@ Right-side inspector Sheet for a selected row/entity.
25
25
  ```tsx
26
26
  <DetailPanel open={!!id} onOpenChange={() => setId(null)} title="Run #12">{body}</DetailPanel>
27
27
  ```
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
+ - **[detail-panel-01.tsx](../examples/detail-panel/detail-panel-01.tsx)** — DetailPanel — Slide-over for record details that keeps the list visible and scroll position intact — the alternative to navigating away or a Dialog.
@@ -0,0 +1,44 @@
1
+ <!-- generated by scripts/gen/skill — do not edit -->
2
+
3
+ # Dialog (L1 primitive)
4
+
5
+ Modal overlay: Trigger + Content(+Header/Footer).
6
+
7
+ **when** 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.
8
+
9
+ Compound: compose the parts below — **do not invent part names**.
10
+
11
+ `import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger } from "@monkey-mini-app/ui"`
12
+
13
+ `packages/ui/src/components/dialog.tsx` · family: Surface · type: component · primitive
14
+
15
+ ## Parts
16
+
17
+ | part | own props |
18
+ |---|---|
19
+ | `Dialog` | `actionsRef?` `defaultOpen?` `defaultTriggerId?` `disablePointerDismissal?` `handle?` `modal?` `onOpenChange?` `onOpenChangeComplete?` `open?` `triggerId?` |
20
+ | `DialogClose` | `nativeButton?` `render?` |
21
+ | `DialogContent` | `finalFocus?` `initialFocus?` `render?` `showCloseButton?` `width?` |
22
+ | `DialogDescription` | `render?` |
23
+ | `DialogFooter` | `showCloseButton?` |
24
+ | `DialogHeader` | — |
25
+ | `DialogOverlay` | `forceRender?` `render?` |
26
+ | `DialogPortal` | `container?` `keepMounted?` `render?` |
27
+ | `DialogTitle` | `render?` |
28
+ | `DialogTrigger` | `handle?` `nativeButton?` `payload?` `render?` |
29
+
30
+ _Inherited HTML/ARIA props (`className`, `style`, `id`, `onClick`, `aria-*`, …) omitted — every component takes them._
31
+
32
+ ## Skeleton
33
+
34
+ ```tsx
35
+ <Dialog open={open} onOpenChange={setOpen}><DialogTrigger asChild><Button>编辑</Button></DialogTrigger><DialogContent><DialogHeader><DialogTitle>标题</DialogTitle></DialogHeader>…<DialogFooter><Button onClick={save}>保存</Button></DialogFooter></DialogContent></Dialog>
36
+ ```
37
+
38
+ ## Examples
39
+
40
+ Runnable files under `references/examples/` — portable by construction (`react` +
41
+ `@monkey-mini-app/ui` + relatives), so copy the closest one into `ui.tsx` / `ui/`.
42
+ Pick by **scenario**, then open the file you need.
43
+
44
+ - **[dialog-01.tsx](../examples/dialog/dialog-01.tsx)** — Dialog — Modal flow with trigger/content/header/footer composition and focus trapping; the base for forms that must interrupt the page.
@@ -1,16 +1,35 @@
1
- <!-- generated by scripts/generate-skill.mjs — do not edit -->
1
+ <!-- generated by scripts/gen/skill — do not edit -->
2
2
 
3
3
  # DiffViewer
4
4
 
5
+ Unified or split diff view.
6
+
7
+ **when** Comparing two versions of text. Pass `original` + `modified` strings.
8
+
5
9
  `import { DiffViewer } from "@monkey-mini-app/ui"`
6
10
 
7
- `packages/ui/src/products/diff-viewer.tsx` · products
11
+ `packages/ui/src/products/diff-viewer.tsx` · family: Discovery & inspect · type: product
8
12
 
9
13
  ## Props
10
14
 
11
15
  | field | type | required | note |
12
16
  |---|---|:---:|---|
13
17
  | `fileName` | `string \| undefined` | | |
18
+ | `language` | `string \| undefined` | | |
14
19
  | `mode` | `"unified" \| "split" \| undefined` | | |
15
20
  | `modified` | `string` | ✓ | |
16
21
  | `original` | `string` | ✓ | |
22
+
23
+ ## Example
24
+
25
+ ```tsx
26
+ <DiffViewer original={a} modified={b} language="ts" mode="split" />
27
+ ```
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
+ - **[diff-viewer-01.tsx](../examples/diff-viewer/diff-viewer-01.tsx)** — DiffViewer — Two strings side by side (unified/split) with added/removed counts — reviewing a config or code change before applying it.
@@ -1,10 +1,14 @@
1
- <!-- generated by scripts/generate-skill.mjs — do not edit -->
1
+ <!-- generated by scripts/gen/skill — do not edit -->
2
2
 
3
3
  # DonutChart
4
4
 
5
+ Ring chart with centre label.
6
+
7
+ **when** Part-of-whole (≤6 slices): storage usage, status split. More categories → `StackedBarChart`.
8
+
5
9
  `import { DonutChart, ChartConfig, Slice } from "@monkey-mini-app/ui"`
6
10
 
7
- `packages/ui/src/blocks/donut-chart.tsx` · blocks
11
+ `packages/ui/src/blocks/donut-chart.tsx` · family: Chart & data · type: block
8
12
 
9
13
  ## Props
10
14
 
@@ -31,3 +35,9 @@ Record< string, { label?: React.ReactNode icon?: React.ComponentType } & ( | { c
31
35
  | `fill` | `string` | ✓ | |
32
36
  | `name` | `string` | ✓ | |
33
37
  | `value` | `number` | ✓ | |
38
+
39
+ ## Example
40
+
41
+ ```tsx
42
+ <DonutChart data={[{ label: "OK", value: 82, color: "var(--primary)" }]} center="82%" />
43
+ ```
@@ -0,0 +1,29 @@
1
+ <!-- generated by scripts/gen/skill — do not edit -->
2
+
3
+ # Drawer (L1 primitive)
4
+
5
+ **when** Mobile-ish bottom sheet on narrow panels. Desktop detail → `Sheet`.
6
+
7
+ Compound: compose the parts below — **do not invent part names**.
8
+
9
+ `import { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerSwipeHandle, DrawerTitle, DrawerTrigger } from "@monkey-mini-app/ui"`
10
+
11
+ `packages/ui/src/components/drawer.tsx` · family: Surface · type: component · primitive
12
+
13
+ ## Parts
14
+
15
+ | part | own props |
16
+ |---|---|
17
+ | `Drawer` | `actionsRef?` `defaultOpen?` `defaultSnapPoint?` `defaultTriggerId?` `disablePointerDismissal?` `handle?` `modal?` `onOpenChange?` `onOpenChangeComplete?` `onSnapPointChange?` `open?` `showSwipeHandle?` +5 |
18
+ | `DrawerClose` | `nativeButton?` `render?` |
19
+ | `DrawerContent` | `finalFocus?` `initialFocus?` `render?` |
20
+ | `DrawerDescription` | `render?` |
21
+ | `DrawerFooter` | — |
22
+ | `DrawerHeader` | — |
23
+ | `DrawerOverlay` | `forceRender?` `render?` |
24
+ | `DrawerPortal` | `container?` `keepMounted?` `render?` |
25
+ | `DrawerSwipeHandle` | — |
26
+ | `DrawerTitle` | `render?` |
27
+ | `DrawerTrigger` | `handle?` `nativeButton?` `payload?` `render?` |
28
+
29
+ _Inherited HTML/ARIA props (`className`, `style`, `id`, `onClick`, `aria-*`, …) omitted — every component takes them._
@@ -0,0 +1,49 @@
1
+ <!-- generated by scripts/gen/skill — do not edit -->
2
+
3
+ # DropdownMenu (L1 primitive)
4
+
5
+ Command menu on a trigger.
6
+
7
+ **when** Row `MoreHorizontal` actions. Free-form panel content → `Popover`.
8
+
9
+ Compound: compose the parts below — **do not invent part names**.
10
+
11
+ `import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from "@monkey-mini-app/ui"`
12
+
13
+ `packages/ui/src/components/dropdown-menu.tsx` · family: Navigation · type: component · primitive
14
+
15
+ ## Parts
16
+
17
+ | part | own props |
18
+ |---|---|
19
+ | `DropdownMenu` | `actionsRef?` `closeParentOnEsc?` `defaultOpen?` `defaultTriggerId?` `disabled?` `handle?` `highlightItemOnHover?` `loopFocus?` `modal?` `onOpenChange?` `onOpenChangeComplete?` `open?` +2 |
20
+ | `DropdownMenuCheckboxItem` | `checked?` `closeOnClick?` `disabled?` `inset?` `label?` `nativeButton?` `onCheckedChange?` `render?` |
21
+ | `DropdownMenuContent` | `align?` `alignOffset?` `finalFocus?` `render?` `side?` `sideOffset?` |
22
+ | `DropdownMenuGroup` | `render?` |
23
+ | `DropdownMenuItem` | `closeOnClick?` `disabled?` `inset?` `label?` `nativeButton?` `render?` `variant?=default/destructive` |
24
+ | `DropdownMenuLabel` | `inset?` `render?` |
25
+ | `DropdownMenuPortal` | `container?` `keepMounted?` `render?` |
26
+ | `DropdownMenuRadioGroup` | `disabled?` `onValueChange?` `render?` `value?` |
27
+ | `DropdownMenuRadioItem` | `closeOnClick?` `disabled?` `inset?` `label?` `nativeButton?` `render?` `value` |
28
+ | `DropdownMenuSeparator` | `orientation?` `render?` |
29
+ | `DropdownMenuShortcut` | — |
30
+ | `DropdownMenuSub` | `actionsRef?` `closeParentOnEsc?` `defaultOpen?` `disabled?` `highlightItemOnHover?` `loopFocus?` `onOpenChange?` `onOpenChangeComplete?` `open?` `orientation?` |
31
+ | `DropdownMenuSubContent` | `align?` `alignOffset?` `finalFocus?` `render?` `side?` `sideOffset?` |
32
+ | `DropdownMenuSubTrigger` | `closeDelay?` `delay?` `disabled?` `inset?` `label?` `nativeButton?` `openOnHover?` `render?` |
33
+ | `DropdownMenuTrigger` | `closeDelay?` `delay?` `disabled?` `handle?` `nativeButton?` `openOnHover?` `payload?` `render?` |
34
+
35
+ _Inherited HTML/ARIA props (`className`, `style`, `id`, `onClick`, `aria-*`, …) omitted — every component takes them._
36
+
37
+ ## Skeleton
38
+
39
+ ```tsx
40
+ <DropdownMenu><DropdownMenuTrigger asChild><Button><Icon.MoreHorizontal /></Button></DropdownMenuTrigger><DropdownMenuContent><DropdownMenuItem onClick={edit}>编辑</DropdownMenuItem></DropdownMenuContent></DropdownMenu>
41
+ ```
42
+
43
+ ## Examples
44
+
45
+ Runnable files under `references/examples/` — portable by construction (`react` +
46
+ `@monkey-mini-app/ui` + relatives), so copy the closest one into `ui.tsx` / `ui/`.
47
+ Pick by **scenario**, then open the file you need.
48
+
49
+ - **[dropdown-menu-01.tsx](../examples/dropdown-menu/dropdown-menu-01.tsx)** — DropdownMenu — Click-to-open action menu on a button, with groups, labels and shortcut hints; for row-level 'more actions'.
@@ -1,10 +1,14 @@
1
- <!-- generated by scripts/generate-skill.mjs — do not edit -->
1
+ <!-- generated by scripts/gen/skill — do not edit -->
2
2
 
3
3
  # DurationInput
4
4
 
5
+ Duration text field (e.g. `1h30m`) with minutes.
6
+
7
+ **when** Timeouts/estimates where you store minutes but type human units.
8
+
5
9
  `import { DurationInput } from "@monkey-mini-app/ui"`
6
10
 
7
- `packages/ui/src/composites/duration-input.tsx` · composites
11
+ `packages/ui/src/composites/duration-input.tsx` · family: Calendar & date · type: composite
8
12
 
9
13
  ## Props
10
14
 
@@ -12,3 +16,17 @@
12
16
  |---|---|:---:|---|
13
17
  | `onChange` | `((value: string, minutes: number) => void) \| undefined` | | |
14
18
  | `value` | `string \| undefined` | | |
19
+
20
+ ## Example
21
+
22
+ ```tsx
23
+ <DurationInput value="45m" onChange={(v, min) => set(min)} />
24
+ ```
25
+
26
+ ## Examples
27
+
28
+ Runnable files under `references/examples/` — portable by construction (`react` +
29
+ `@monkey-mini-app/ui` + relatives), so copy the closest one into `ui.tsx` / `ui/`.
30
+ Pick by **scenario**, then open the file you need.
31
+
32
+ - **[duration-input-01.tsx](../examples/duration-input/duration-input-01.tsx)** — DurationInput — Enter a length of time (hours + minutes), not a calendar date — timeouts, SLAs, shift lengths. — _*Hours and minutes, not a text box*_