@monkey-mini-app/ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/components.json +23 -0
  2. package/dist/globals.css +2 -0
  3. package/dist/index.js +138 -0
  4. package/dist/manifest.json +11 -0
  5. package/dist/src/blocks/activity-feed.tsx +9 -0
  6. package/dist/src/blocks/app-shell.tsx +37 -0
  7. package/dist/src/blocks/attachment-gallery.tsx +30 -0
  8. package/dist/src/blocks/bar-chart.tsx +33 -0
  9. package/dist/src/blocks/comment-thread.tsx +30 -0
  10. package/dist/src/blocks/description-list.tsx +16 -0
  11. package/dist/src/blocks/detail-panel.tsx +43 -0
  12. package/dist/src/blocks/donut-chart.tsx +38 -0
  13. package/dist/src/blocks/env-badge.tsx +23 -0
  14. package/dist/src/blocks/file-tree.tsx +5 -0
  15. package/dist/src/blocks/filter-bar.tsx +21 -0
  16. package/dist/src/blocks/gauge.tsx +13 -0
  17. package/dist/src/blocks/notification-center.tsx +22 -0
  18. package/dist/src/blocks/page-header.tsx +30 -0
  19. package/dist/src/blocks/progress-ring.tsx +25 -0
  20. package/dist/src/blocks/radar-chart.tsx +31 -0
  21. package/dist/src/blocks/request-inspector.tsx +34 -0
  22. package/dist/src/blocks/run-timeline.tsx +5 -0
  23. package/dist/src/blocks/scrollspy.tsx +42 -0
  24. package/dist/src/blocks/severity-chip.tsx +27 -0
  25. package/dist/src/blocks/sparkline.tsx +19 -0
  26. package/dist/src/blocks/stat-card.tsx +49 -0
  27. package/dist/src/blocks/status-badge.tsx +39 -0
  28. package/dist/src/blocks/terminal.tsx +10 -0
  29. package/dist/src/blocks/test-step-list.tsx +19 -0
  30. package/dist/src/blocks/trend-card.tsx +51 -0
  31. package/dist/src/components/accordion.tsx +72 -0
  32. package/dist/src/components/alert-dialog.tsx +185 -0
  33. package/dist/src/components/alert.tsx +76 -0
  34. package/dist/src/components/aspect-ratio.tsx +22 -0
  35. package/dist/src/components/attachment.tsx +207 -0
  36. package/dist/src/components/avatar.tsx +107 -0
  37. package/dist/src/components/badge.tsx +52 -0
  38. package/dist/src/components/breadcrumb.tsx +125 -0
  39. package/dist/src/components/bubble.tsx +128 -0
  40. package/dist/src/components/button-group.tsx +87 -0
  41. package/dist/src/components/button.tsx +58 -0
  42. package/dist/src/components/calendar.tsx +221 -0
  43. package/dist/src/components/card.tsx +103 -0
  44. package/dist/src/components/chart.tsx +371 -0
  45. package/dist/src/components/checkbox.tsx +29 -0
  46. package/dist/src/components/collapsible.tsx +19 -0
  47. package/dist/src/components/combobox.tsx +295 -0
  48. package/dist/src/components/command.tsx +196 -0
  49. package/dist/src/components/context-menu.tsx +271 -0
  50. package/dist/src/components/dialog.tsx +158 -0
  51. package/dist/src/components/drawer.tsx +226 -0
  52. package/dist/src/components/dropdown-menu.tsx +268 -0
  53. package/dist/src/components/empty.tsx +123 -0
  54. package/dist/src/components/field.tsx +236 -0
  55. package/dist/src/components/hover-card.tsx +49 -0
  56. package/dist/src/components/input-group.tsx +158 -0
  57. package/dist/src/components/input.tsx +20 -0
  58. package/dist/src/components/item.tsx +201 -0
  59. package/dist/src/components/kbd.tsx +26 -0
  60. package/dist/src/components/label.tsx +20 -0
  61. package/dist/src/components/marker.tsx +71 -0
  62. package/dist/src/components/menubar.tsx +280 -0
  63. package/dist/src/components/message-scroller.tsx +129 -0
  64. package/dist/src/components/message.tsx +92 -0
  65. package/dist/src/components/native-select.tsx +61 -0
  66. package/dist/src/components/navigation-menu.tsx +168 -0
  67. package/dist/src/components/pagination.tsx +135 -0
  68. package/dist/src/components/popover.tsx +88 -0
  69. package/dist/src/components/progress.tsx +83 -0
  70. package/dist/src/components/questionnaire.tsx +329 -0
  71. package/dist/src/components/radio-group.tsx +36 -0
  72. package/dist/src/components/resizable.tsx +50 -0
  73. package/dist/src/components/scroll-area.tsx +52 -0
  74. package/dist/src/components/select.tsx +201 -0
  75. package/dist/src/components/separator.tsx +23 -0
  76. package/dist/src/components/sheet.tsx +136 -0
  77. package/dist/src/components/sidebar.tsx +721 -0
  78. package/dist/src/components/skeleton.tsx +13 -0
  79. package/dist/src/components/slider.tsx +52 -0
  80. package/dist/src/components/spinner.tsx +10 -0
  81. package/dist/src/components/switch.tsx +32 -0
  82. package/dist/src/components/table.tsx +114 -0
  83. package/dist/src/components/tabs.tsx +82 -0
  84. package/dist/src/components/textarea.tsx +18 -0
  85. package/dist/src/components/toast.tsx +234 -0
  86. package/dist/src/components/toggle-group.tsx +89 -0
  87. package/dist/src/components/toggle.tsx +43 -0
  88. package/dist/src/components/tooltip.tsx +66 -0
  89. package/dist/src/composites/autocomplete.tsx +55 -0
  90. package/dist/src/composites/cascader.tsx +46 -0
  91. package/dist/src/composites/color-picker.tsx +19 -0
  92. package/dist/src/composites/confirm-dialog.tsx +56 -0
  93. package/dist/src/composites/copyable.tsx +37 -0
  94. package/dist/src/composites/currency-input.tsx +31 -0
  95. package/dist/src/composites/date-chrome.tsx +157 -0
  96. package/dist/src/composites/date-picker.tsx +91 -0
  97. package/dist/src/composites/date-range-picker.tsx +96 -0
  98. package/dist/src/composites/date-time-picker.tsx +115 -0
  99. package/dist/src/composites/date-time-range-picker.tsx +51 -0
  100. package/dist/src/composites/duration-input.tsx +122 -0
  101. package/dist/src/composites/mini-calendar.tsx +24 -0
  102. package/dist/src/composites/number-field.tsx +53 -0
  103. package/dist/src/composites/password-field.tsx +44 -0
  104. package/dist/src/composites/phone-input.tsx +22 -0
  105. package/dist/src/composites/rating.tsx +39 -0
  106. package/dist/src/composites/relative-date-picker.tsx +62 -0
  107. package/dist/src/composites/search-input.tsx +49 -0
  108. package/dist/src/composites/slider-range.tsx +30 -0
  109. package/dist/src/composites/tag-input.tsx +56 -0
  110. package/dist/src/composites/time-picker.tsx +199 -0
  111. package/dist/src/composites/time-range-picker.tsx +25 -0
  112. package/dist/src/composites/timezone-select.tsx +251 -0
  113. package/dist/src/composites/transfer.tsx +52 -0
  114. package/dist/src/composites/user-picker.tsx +40 -0
  115. package/dist/src/hooks/use-mobile.ts +19 -0
  116. package/dist/src/i18n/context.tsx +72 -0
  117. package/dist/src/i18n/en.ts +168 -0
  118. package/dist/src/i18n/zh.ts +160 -0
  119. package/dist/src/index.ts +134 -0
  120. package/dist/src/lib/icons.tsx +16 -0
  121. package/dist/src/lib/illustrations.tsx +573 -0
  122. package/dist/src/lib/utils.ts +6 -0
  123. package/dist/src/products/cells.tsx +18 -0
  124. package/dist/src/products/code-block.tsx +75 -0
  125. package/dist/src/products/code-editor.tsx +49 -0
  126. package/dist/src/products/column-meta.d.ts +9 -0
  127. package/dist/src/products/data-grid.tsx +689 -0
  128. package/dist/src/products/diff-viewer.tsx +129 -0
  129. package/dist/src/products/event-calendar.tsx +845 -0
  130. package/dist/src/products/export-csv.ts +25 -0
  131. package/dist/src/products/file-dropzone.tsx +41 -0
  132. package/dist/src/products/gantt.tsx +41 -0
  133. package/dist/src/products/jira-wiki-parse.ts +197 -0
  134. package/dist/src/products/jira-wiki.tsx +285 -0
  135. package/dist/src/products/jql-input.tsx +62 -0
  136. package/dist/src/products/jql-language.ts +70 -0
  137. package/dist/src/products/json-viewer.tsx +37 -0
  138. package/dist/src/products/kanban-issue-panel.tsx +98 -0
  139. package/dist/src/products/kanban.tsx +245 -0
  140. package/dist/src/products/log-viewer.tsx +33 -0
  141. package/dist/src/products/markdown-editor.tsx +63 -0
  142. package/dist/src/products/markdown.tsx +26 -0
  143. package/dist/src/products/rich-text-editor.tsx +84 -0
  144. package/dist/src/products/sortable-list.tsx +61 -0
  145. package/dist/src/products/stepper.tsx +89 -0
  146. package/dist/src/products/timeline.tsx +32 -0
  147. package/dist/src/products/tree-view.tsx +56 -0
  148. package/dist/src/styles/globals.css +352 -0
  149. package/package.json +100 -0
@@ -0,0 +1,72 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import { enUS, zhCN } from "date-fns/locale"
5
+ import type { Locale } from "date-fns"
6
+
7
+ import { en, type UiMessages } from "./en"
8
+ import { zh } from "./zh"
9
+
10
+ export type UiLocale = "en" | "zh"
11
+
12
+ type UiI18nValue = {
13
+ locale: UiLocale
14
+ messages: UiMessages
15
+ dateLocale: Locale
16
+ }
17
+
18
+ const dictionaries: Record<UiLocale, UiMessages> = { en, zh }
19
+ const dateLocales: Record<UiLocale, Locale> = { en: enUS, zh: zhCN }
20
+
21
+ const UiI18nContext = React.createContext<UiI18nValue>({
22
+ locale: "en",
23
+ messages: en,
24
+ dateLocale: enUS,
25
+ })
26
+
27
+ export function UiProvider({
28
+ locale = "en",
29
+ messages,
30
+ children,
31
+ }: {
32
+ locale?: UiLocale
33
+ messages?: UiMessages
34
+ children: React.ReactNode
35
+ }) {
36
+ const value = React.useMemo<UiI18nValue>(
37
+ () => ({
38
+ locale,
39
+ messages: messages ?? dictionaries[locale],
40
+ dateLocale: dateLocales[locale],
41
+ }),
42
+ [locale, messages]
43
+ )
44
+ return <UiI18nContext.Provider value={value}>{children}</UiI18nContext.Provider>
45
+ }
46
+
47
+ export function useUiI18n() {
48
+ return React.useContext(UiI18nContext)
49
+ }
50
+
51
+ export function useUiMessages() {
52
+ return useUiI18n().messages
53
+ }
54
+
55
+ export function useUiLocale() {
56
+ return useUiI18n().locale
57
+ }
58
+
59
+ export function useDateLocale() {
60
+ return useUiI18n().dateLocale
61
+ }
62
+
63
+ export function useLabels<K extends keyof UiMessages>(
64
+ key: K,
65
+ override?: Partial<UiMessages[K]>
66
+ ): UiMessages[K] {
67
+ const group = useUiMessages()[key]
68
+ if (!override) return group
69
+ return { ...group, ...override }
70
+ }
71
+
72
+ export { en, zh, dictionaries }
@@ -0,0 +1,168 @@
1
+ export const en = {
2
+ common: {
3
+ today: "Today",
4
+ clear: "Clear",
5
+ cancel: "Cancel",
6
+ confirm: "Confirm",
7
+ save: "Save",
8
+ delete: "Delete",
9
+ search: "Search…",
10
+ previous: "Previous",
11
+ next: "Next",
12
+ copy: "Copy",
13
+ close: "Close",
14
+ },
15
+ datePicker: {
16
+ placeholder: "Pick a date",
17
+ },
18
+ dateRangePicker: {
19
+ placeholder: "Pick a date range",
20
+ },
21
+ dateTimePicker: {
22
+ placeholder: "Pick date and time",
23
+ },
24
+ dateTimeRange: {
25
+ start: "Start",
26
+ end: "End",
27
+ },
28
+ timeRange: {
29
+ to: "to",
30
+ },
31
+ timezoneSelect: {
32
+ search: "Search city or offset…",
33
+ empty: "No timezone found.",
34
+ common: "Common",
35
+ typeToSearch: (count: number) => `Type to search ${count} timezones`,
36
+ aria: (city: string) => `Timezone ${city}`,
37
+ },
38
+ relativeDate: {
39
+ today: "Today",
40
+ last7d: "Last 7d",
41
+ last30d: "Last 30d",
42
+ sprint: "This sprint",
43
+ custom: "Custom",
44
+ },
45
+ searchInput: {
46
+ placeholder: "Search…",
47
+ },
48
+ tagInput: {
49
+ placeholder: "Add tag…",
50
+ },
51
+ userPicker: {
52
+ placeholder: "Select user",
53
+ },
54
+ passwordField: {
55
+ show: "Show password",
56
+ hide: "Hide password",
57
+ },
58
+ numberField: {
59
+ decrease: "Decrease",
60
+ increase: "Increase",
61
+ },
62
+ durationInput: {
63
+ hours: "h",
64
+ minutes: "m",
65
+ decrease: (unit: string) => `Decrease ${unit}`,
66
+ increase: (unit: string) => `Increase ${unit}`,
67
+ },
68
+ copyable: {
69
+ copy: "Copy",
70
+ },
71
+ confirmDialog: {
72
+ confirm: "Confirm",
73
+ cancel: "Cancel",
74
+ },
75
+ eventCalendar: {
76
+ today: "Today",
77
+ prev: "Prev",
78
+ next: "Next",
79
+ month: "Month",
80
+ week: "Week",
81
+ day: "Day",
82
+ allDay: "All day",
83
+ newEvent: "New event",
84
+ editEvent: "Edit event",
85
+ eventTitle: "Event title",
86
+ save: "Save",
87
+ delete: "Delete",
88
+ more: (count: number) => `+${count} more`,
89
+ weekdays: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"] as [
90
+ string,
91
+ string,
92
+ string,
93
+ string,
94
+ string,
95
+ string,
96
+ string,
97
+ ],
98
+ },
99
+ dataGrid: {
100
+ search: "Search…",
101
+ filterColumn: (label: string) => `Filter ${label}…`,
102
+ clear: "Clear",
103
+ clearFilters: "Clear filters",
104
+ noResults: "No results",
105
+ noResultsHint: "Try a different search, or clear column filters.",
106
+ selectAll: "Select all",
107
+ selectRow: "Select row",
108
+ row: "row",
109
+ rows: "rows",
110
+ rowsLabel: "Rows",
111
+ export: "Export",
112
+ view: "View",
113
+ columns: "Columns",
114
+ previousPage: "Previous page",
115
+ nextPage: "Next page",
116
+ selected: (count: number) => `${count} selected`,
117
+ },
118
+ fileDropzone: {
119
+ drop: "Drop files here, or click to browse",
120
+ },
121
+ kanbanIssue: {
122
+ assignee: "Assignee",
123
+ reporter: "Reporter",
124
+ updated: "Updated",
125
+ unassigned: "Unassigned",
126
+ description: "Description",
127
+ noDescription: "No description.",
128
+ comments: "Comments",
129
+ noComments: "No comments.",
130
+ },
131
+ markdownEditor: {
132
+ edit: "Edit",
133
+ split: "Split",
134
+ preview: "Preview",
135
+ },
136
+ richText: {
137
+ placeholder: "Write…",
138
+ bold: "Bold",
139
+ italic: "Italic",
140
+ bullet: "Bullet list",
141
+ ordered: "Ordered list",
142
+ code: "Code",
143
+ },
144
+ pagination: {
145
+ previous: "Previous",
146
+ next: "Next",
147
+ previousPage: "Go to previous page",
148
+ nextPage: "Go to next page",
149
+ },
150
+ questionnaire: {
151
+ previous: "Previous",
152
+ skip: "Skip",
153
+ next: "Next",
154
+ submit: "Submit",
155
+ },
156
+ command: {
157
+ title: "Command Palette",
158
+ description: "Search for a command to run...",
159
+ },
160
+ jiraWiki: {
161
+ empty: "Empty",
162
+ },
163
+ jqlInput: {
164
+ placeholder: "project = TMS AND status = Open",
165
+ },
166
+ }
167
+
168
+ export type UiMessages = typeof en
@@ -0,0 +1,160 @@
1
+ import type { UiMessages } from "./en"
2
+
3
+ export const zh: UiMessages = {
4
+ common: {
5
+ today: "今天",
6
+ clear: "清除",
7
+ cancel: "取消",
8
+ confirm: "确认",
9
+ save: "保存",
10
+ delete: "删除",
11
+ search: "搜索…",
12
+ previous: "上一页",
13
+ next: "下一页",
14
+ copy: "复制",
15
+ close: "关闭",
16
+ },
17
+ datePicker: {
18
+ placeholder: "选择日期",
19
+ },
20
+ dateRangePicker: {
21
+ placeholder: "选择日期范围",
22
+ },
23
+ dateTimePicker: {
24
+ placeholder: "选择日期和时间",
25
+ },
26
+ dateTimeRange: {
27
+ start: "开始",
28
+ end: "结束",
29
+ },
30
+ timeRange: {
31
+ to: "至",
32
+ },
33
+ timezoneSelect: {
34
+ search: "搜索城市或时差…",
35
+ empty: "没有匹配的时区。",
36
+ common: "常用",
37
+ typeToSearch: (count: number) => `输入以搜索 ${count} 个时区`,
38
+ aria: (city: string) => `时区 ${city}`,
39
+ },
40
+ relativeDate: {
41
+ today: "今天",
42
+ last7d: "近 7 天",
43
+ last30d: "近 30 天",
44
+ sprint: "本迭代",
45
+ custom: "自定义",
46
+ },
47
+ searchInput: {
48
+ placeholder: "搜索…",
49
+ },
50
+ tagInput: {
51
+ placeholder: "添加标签…",
52
+ },
53
+ userPicker: {
54
+ placeholder: "选择用户",
55
+ },
56
+ passwordField: {
57
+ show: "显示密码",
58
+ hide: "隐藏密码",
59
+ },
60
+ numberField: {
61
+ decrease: "减少",
62
+ increase: "增加",
63
+ },
64
+ durationInput: {
65
+ hours: "时",
66
+ minutes: "分",
67
+ decrease: (unit: string) => `减少${unit}`,
68
+ increase: (unit: string) => `增加${unit}`,
69
+ },
70
+ copyable: {
71
+ copy: "复制",
72
+ },
73
+ confirmDialog: {
74
+ confirm: "确认",
75
+ cancel: "取消",
76
+ },
77
+ eventCalendar: {
78
+ today: "今天",
79
+ prev: "上一页",
80
+ next: "下一页",
81
+ month: "月",
82
+ week: "周",
83
+ day: "日",
84
+ allDay: "全天",
85
+ newEvent: "新建事件",
86
+ editEvent: "编辑事件",
87
+ eventTitle: "事件标题",
88
+ save: "保存",
89
+ delete: "删除",
90
+ more: (count: number) => `还有 ${count} 项`,
91
+ weekdays: ["一", "二", "三", "四", "五", "六", "日"],
92
+ },
93
+ dataGrid: {
94
+ search: "搜索…",
95
+ filterColumn: (label: string) => `筛选 ${label}…`,
96
+ clear: "清除",
97
+ clearFilters: "清除筛选",
98
+ noResults: "没有结果",
99
+ noResultsHint: "试试别的关键词,或清除列筛选。",
100
+ selectAll: "全选",
101
+ selectRow: "选择行",
102
+ row: "行",
103
+ rows: "行",
104
+ rowsLabel: "每页",
105
+ export: "导出",
106
+ view: "视图",
107
+ columns: "列",
108
+ previousPage: "上一页",
109
+ nextPage: "下一页",
110
+ selected: (count: number) => `已选 ${count} 项`,
111
+ },
112
+ fileDropzone: {
113
+ drop: "拖到这里,或点击选择文件",
114
+ },
115
+ kanbanIssue: {
116
+ assignee: "经办人",
117
+ reporter: "报告人",
118
+ updated: "更新",
119
+ unassigned: "未分配",
120
+ description: "描述",
121
+ noDescription: "暂无描述。",
122
+ comments: "评论",
123
+ noComments: "暂无评论。",
124
+ },
125
+ markdownEditor: {
126
+ edit: "编辑",
127
+ split: "分栏",
128
+ preview: "预览",
129
+ },
130
+ richText: {
131
+ placeholder: "写点什么…",
132
+ bold: "加粗",
133
+ italic: "斜体",
134
+ bullet: "无序列表",
135
+ ordered: "有序列表",
136
+ code: "代码",
137
+ },
138
+ pagination: {
139
+ previous: "上一页",
140
+ next: "下一页",
141
+ previousPage: "上一页",
142
+ nextPage: "下一页",
143
+ },
144
+ questionnaire: {
145
+ previous: "上一步",
146
+ skip: "跳过",
147
+ next: "下一步",
148
+ submit: "提交",
149
+ },
150
+ command: {
151
+ title: "命令面板",
152
+ description: "搜索要执行的命令…",
153
+ },
154
+ jiraWiki: {
155
+ empty: "空",
156
+ },
157
+ jqlInput: {
158
+ placeholder: "project = TMS AND status = Open",
159
+ },
160
+ }
@@ -0,0 +1,134 @@
1
+ export * from "./lib/utils"
2
+ export * from "./lib/icons"
3
+ export * from "./i18n/context"
4
+ export * from "./components/accordion"
5
+ export * from "./components/alert-dialog"
6
+ export * from "./components/alert"
7
+ export * from "./components/aspect-ratio"
8
+ export * from "./components/attachment"
9
+ export * from "./components/avatar"
10
+ export * from "./components/badge"
11
+ export * from "./components/breadcrumb"
12
+ export * from "./components/bubble"
13
+ export * from "./components/button-group"
14
+ export * from "./components/button"
15
+ export * from "./components/calendar"
16
+ export * from "./components/card"
17
+ export * from "./components/chart"
18
+ export * from "./components/checkbox"
19
+ export * from "./components/collapsible"
20
+ export * from "./components/combobox"
21
+ export * from "./components/command"
22
+ export * from "./components/context-menu"
23
+ export * from "./components/dialog"
24
+ export * from "./components/drawer"
25
+ export * from "./components/dropdown-menu"
26
+ export * from "./components/empty"
27
+ export * from "./components/field"
28
+ export * from "./components/hover-card"
29
+ export * from "./components/input-group"
30
+ export * from "./components/input"
31
+ export * from "./components/item"
32
+ export * from "./components/kbd"
33
+ export * from "./components/label"
34
+ export * from "./components/marker"
35
+ export * from "./components/menubar"
36
+ export * from "./components/message-scroller"
37
+ export * from "./components/message"
38
+ export * from "./components/native-select"
39
+ export * from "./components/navigation-menu"
40
+ export * from "./components/pagination"
41
+ export * from "./components/popover"
42
+ export * from "./components/progress"
43
+ export * from "./components/questionnaire"
44
+ export * from "./components/radio-group"
45
+ export * from "./components/resizable"
46
+ export * from "./components/scroll-area"
47
+ export * from "./components/select"
48
+ export * from "./components/separator"
49
+ export * from "./components/sheet"
50
+ export * from "./components/sidebar"
51
+ export * from "./components/skeleton"
52
+ export * from "./components/slider"
53
+ export * from "./components/spinner"
54
+ export * from "./components/switch"
55
+ export * from "./components/table"
56
+ export * from "./components/tabs"
57
+ export * from "./components/textarea"
58
+ export * from "./components/toast"
59
+ export * from "./components/toggle-group"
60
+ export * from "./components/toggle"
61
+ export * from "./components/tooltip"
62
+ export * from "./composites/autocomplete"
63
+ export * from "./composites/cascader"
64
+ export * from "./composites/color-picker"
65
+ export * from "./composites/confirm-dialog"
66
+ export * from "./composites/copyable"
67
+ export * from "./composites/currency-input"
68
+ export * from "./composites/date-picker"
69
+ export * from "./composites/date-range-picker"
70
+ export * from "./composites/date-time-picker"
71
+ export * from "./composites/date-time-range-picker"
72
+ export * from "./composites/duration-input"
73
+ export * from "./composites/mini-calendar"
74
+ export * from "./composites/number-field"
75
+ export * from "./composites/password-field"
76
+ export * from "./composites/phone-input"
77
+ export * from "./composites/rating"
78
+ export * from "./composites/relative-date-picker"
79
+ export * from "./composites/search-input"
80
+ export * from "./composites/slider-range"
81
+ export * from "./composites/tag-input"
82
+ export * from "./composites/time-picker"
83
+ export * from "./composites/time-range-picker"
84
+ export * from "./composites/timezone-select"
85
+ export * from "./composites/transfer"
86
+ export * from "./composites/user-picker"
87
+ export * from "./products/cells"
88
+ export * from "./products/code-block"
89
+ export * from "./products/code-editor"
90
+ export * from "./products/data-grid"
91
+ export * from "./products/diff-viewer"
92
+ export * from "./products/markdown"
93
+ export * from "./products/markdown-editor"
94
+ export * from "./products/rich-text-editor"
95
+ export * from "./products/event-calendar"
96
+ export * from "./products/export-csv"
97
+ export * from "./products/file-dropzone"
98
+ export * from "./products/gantt"
99
+ export * from "./products/json-viewer"
100
+ export * from "./products/jira-wiki"
101
+ export * from "./products/jql-input"
102
+ export * from "./products/kanban"
103
+ export * from "./products/kanban-issue-panel"
104
+ export * from "./products/log-viewer"
105
+ export * from "./products/sortable-list"
106
+ export * from "./products/stepper"
107
+ export * from "./products/timeline"
108
+ export * from "./products/tree-view"
109
+ export * from "./blocks/activity-feed"
110
+ export * from "./blocks/app-shell"
111
+ export * from "./blocks/attachment-gallery"
112
+ export * from "./blocks/bar-chart"
113
+ export * from "./blocks/comment-thread"
114
+ export * from "./blocks/description-list"
115
+ export * from "./blocks/detail-panel"
116
+ export * from "./blocks/donut-chart"
117
+ export * from "./blocks/env-badge"
118
+ export * from "./blocks/file-tree"
119
+ export * from "./blocks/filter-bar"
120
+ export * from "./blocks/gauge"
121
+ export * from "./blocks/notification-center"
122
+ export * from "./blocks/page-header"
123
+ export * from "./blocks/progress-ring"
124
+ export * from "./blocks/radar-chart"
125
+ export * from "./blocks/request-inspector"
126
+ export * from "./blocks/run-timeline"
127
+ export * from "./blocks/scrollspy"
128
+ export * from "./blocks/severity-chip"
129
+ export * from "./blocks/sparkline"
130
+ export * from "./blocks/stat-card"
131
+ export * from "./blocks/status-badge"
132
+ export * from "./blocks/terminal"
133
+ export * from "./blocks/test-step-list"
134
+ export * from "./blocks/trend-card"
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Icon namespace re-export from lucide-react.
3
+ *
4
+ * Apps import it from the UI library (never from lucide-react directly):
5
+ *
6
+ * import { Icon } from "@monkey-mini-app/ui";
7
+ * <Icon.HelpCircle size={16} strokeWidth={2} />
8
+ *
9
+ * The namespace keeps the whole lucide set available so authors aren't limited
10
+ * to a curated list; discovery is steered by skills/references/icons.md (a short
11
+ * "when to use" reference), not by dumping every icon name here. `Icon` accepts
12
+ * any lucide React component name (PascalCase).
13
+ */
14
+ import * as Icon from "lucide-react";
15
+
16
+ export { Icon };