@manohub/ui 0.6.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 (169) hide show
  1. package/README.md +141 -0
  2. package/dist/components/avatar/index.d.ts +283 -0
  3. package/dist/components/avatar/index.js +167 -0
  4. package/dist/components/badge/index.d.ts +132 -0
  5. package/dist/components/badge/index.js +99 -0
  6. package/dist/components/button/index.d.ts +578 -0
  7. package/dist/components/button/index.js +191 -0
  8. package/dist/components/capsule/index.d.ts +161 -0
  9. package/dist/components/capsule/index.js +101 -0
  10. package/dist/components/card/index.d.ts +456 -0
  11. package/dist/components/card/index.js +231 -0
  12. package/dist/components/checkbox/index.d.ts +331 -0
  13. package/dist/components/checkbox/index.js +165 -0
  14. package/dist/components/code/index.d.ts +134 -0
  15. package/dist/components/code/index.js +117 -0
  16. package/dist/components/code-editor/index.d.ts +163 -0
  17. package/dist/components/code-editor/index.js +98 -0
  18. package/dist/components/collapse/index.d.ts +125 -0
  19. package/dist/components/collapse/index.js +95 -0
  20. package/dist/components/control-size.d.ts +8 -0
  21. package/dist/components/dialog/index.d.ts +224 -0
  22. package/dist/components/dialog/index.js +194 -0
  23. package/dist/components/divider/index.d.ts +64 -0
  24. package/dist/components/divider/index.js +62 -0
  25. package/dist/components/drawer/index.d.ts +226 -0
  26. package/dist/components/drawer/index.js +190 -0
  27. package/dist/components/filter/index.d.ts +391 -0
  28. package/dist/components/filter/index.js +203 -0
  29. package/dist/components/form/index.d.ts +704 -0
  30. package/dist/components/form/index.js +329 -0
  31. package/dist/components/input/index.d.ts +980 -0
  32. package/dist/components/input/index.js +334 -0
  33. package/dist/components/layout/index.d.ts +162 -0
  34. package/dist/components/layout/index.js +100 -0
  35. package/dist/components/list-view/index.d.ts +563 -0
  36. package/dist/components/list-view/index.js +221 -0
  37. package/dist/components/loading/index.d.ts +77 -0
  38. package/dist/components/loading/index.js +40 -0
  39. package/dist/components/nav/index.d.ts +293 -0
  40. package/dist/components/nav/index.js +164 -0
  41. package/dist/components/notice/index.d.ts +137 -0
  42. package/dist/components/notice/index.js +101 -0
  43. package/dist/components/notification/index.d.ts +118 -0
  44. package/dist/components/notification/index.js +99 -0
  45. package/dist/components/page/index.d.ts +276 -0
  46. package/dist/components/page/index.js +351 -0
  47. package/dist/components/page/split-resize.d.ts +42 -0
  48. package/dist/components/page/split-resize.js +36 -0
  49. package/dist/components/pagination/index.d.ts +171 -0
  50. package/dist/components/pagination/index.js +226 -0
  51. package/dist/components/panel/index.d.ts +401 -0
  52. package/dist/components/panel/index.js +193 -0
  53. package/dist/components/part-padding.d.ts +27 -0
  54. package/dist/components/part-padding.js +23 -0
  55. package/dist/components/query-state/index.d.ts +207 -0
  56. package/dist/components/query-state/index.js +181 -0
  57. package/dist/components/radio/index.d.ts +473 -0
  58. package/dist/components/radio/index.js +250 -0
  59. package/dist/components/search/index.d.ts +167 -0
  60. package/dist/components/search/index.js +105 -0
  61. package/dist/components/select/index.d.ts +252 -0
  62. package/dist/components/select/index.js +281 -0
  63. package/dist/components/skeleton/index.d.ts +88 -0
  64. package/dist/components/skeleton/index.js +56 -0
  65. package/dist/components/steps/index.d.ts +199 -0
  66. package/dist/components/steps/index.js +117 -0
  67. package/dist/components/switch/index.d.ts +150 -0
  68. package/dist/components/switch/index.js +103 -0
  69. package/dist/components/table/index.d.ts +351 -0
  70. package/dist/components/table/index.js +286 -0
  71. package/dist/components/tabs/index.d.ts +179 -0
  72. package/dist/components/tabs/index.js +153 -0
  73. package/dist/components/tabset/index.d.ts +105 -0
  74. package/dist/components/tabset/index.js +68 -0
  75. package/dist/components/tag/index.d.ts +203 -0
  76. package/dist/components/tag/index.js +144 -0
  77. package/dist/components/toast/index.d.ts +271 -0
  78. package/dist/components/toast/index.js +116 -0
  79. package/dist/components/tooltip/index.d.ts +126 -0
  80. package/dist/components/tooltip/index.js +97 -0
  81. package/dist/components/tree/index.d.ts +317 -0
  82. package/dist/components/tree/index.js +251 -0
  83. package/dist/components/upload/index.d.ts +384 -0
  84. package/dist/components/upload/index.js +172 -0
  85. package/dist/index.d.ts +63 -0
  86. package/dist/index.js +102 -0
  87. package/dist/services/base.d.ts +21 -0
  88. package/dist/services/base.js +42 -0
  89. package/dist/services/dialog.d.ts +41 -0
  90. package/dist/services/dialog.js +83 -0
  91. package/dist/services/index.d.ts +12 -0
  92. package/dist/services/loading.d.ts +21 -0
  93. package/dist/services/loading.js +41 -0
  94. package/dist/services/toast.d.ts +40 -0
  95. package/dist/services/toast.js +74 -0
  96. package/dist/styles/components/avatar.css +128 -0
  97. package/dist/styles/components/avatar.tokens.css +24 -0
  98. package/dist/styles/components/badge.css +237 -0
  99. package/dist/styles/components/button.css +454 -0
  100. package/dist/styles/components/button.tokens.css +56 -0
  101. package/dist/styles/components/capsule.css +120 -0
  102. package/dist/styles/components/capsule.tokens.css +27 -0
  103. package/dist/styles/components/card.css +192 -0
  104. package/dist/styles/components/checkbox.css +145 -0
  105. package/dist/styles/components/checkbox.tokens.css +26 -0
  106. package/dist/styles/components/code-editor.css +91 -0
  107. package/dist/styles/components/code-editor.tokens.css +24 -0
  108. package/dist/styles/components/code.css +153 -0
  109. package/dist/styles/components/code.tokens.css +29 -0
  110. package/dist/styles/components/collapse.css +62 -0
  111. package/dist/styles/components/collapse.tokens.css +20 -0
  112. package/dist/styles/components/dialog.css +106 -0
  113. package/dist/styles/components/dialog.tokens.css +24 -0
  114. package/dist/styles/components/divider.css +71 -0
  115. package/dist/styles/components/divider.tokens.css +21 -0
  116. package/dist/styles/components/drawer.css +143 -0
  117. package/dist/styles/components/drawer.tokens.css +22 -0
  118. package/dist/styles/components/filter.css +41 -0
  119. package/dist/styles/components/filter.tokens.css +14 -0
  120. package/dist/styles/components/form.css +220 -0
  121. package/dist/styles/components/form.tokens.css +15 -0
  122. package/dist/styles/components/input.css +445 -0
  123. package/dist/styles/components/input.tokens.css +41 -0
  124. package/dist/styles/components/layout.css +198 -0
  125. package/dist/styles/components/list-view.css +244 -0
  126. package/dist/styles/components/loading.css +76 -0
  127. package/dist/styles/components/loading.tokens.css +23 -0
  128. package/dist/styles/components/nav.css +48 -0
  129. package/dist/styles/components/notice.css +153 -0
  130. package/dist/styles/components/notice.tokens.css +17 -0
  131. package/dist/styles/components/notification.css +159 -0
  132. package/dist/styles/components/notification.tokens.css +37 -0
  133. package/dist/styles/components/page.css +473 -0
  134. package/dist/styles/components/pagination.css +297 -0
  135. package/dist/styles/components/pagination.tokens.css +32 -0
  136. package/dist/styles/components/panel.css +77 -0
  137. package/dist/styles/components/query-state.css +88 -0
  138. package/dist/styles/components/radio.css +271 -0
  139. package/dist/styles/components/radio.tokens.css +26 -0
  140. package/dist/styles/components/search.css +30 -0
  141. package/dist/styles/components/select.css +242 -0
  142. package/dist/styles/components/select.tokens.css +33 -0
  143. package/dist/styles/components/skeleton.css +60 -0
  144. package/dist/styles/components/skeleton.tokens.css +27 -0
  145. package/dist/styles/components/steps.css +157 -0
  146. package/dist/styles/components/steps.tokens.css +42 -0
  147. package/dist/styles/components/switch.css +165 -0
  148. package/dist/styles/components/switch.tokens.css +26 -0
  149. package/dist/styles/components/table.css +439 -0
  150. package/dist/styles/components/table.tokens.css +41 -0
  151. package/dist/styles/components/tabs.css +234 -0
  152. package/dist/styles/components/tabs.tokens.css +30 -0
  153. package/dist/styles/components/tag.css +200 -0
  154. package/dist/styles/components/tag.tokens.css +30 -0
  155. package/dist/styles/components/toast.css +150 -0
  156. package/dist/styles/components/toast.tokens.css +26 -0
  157. package/dist/styles/components/tooltip.css +89 -0
  158. package/dist/styles/components/tooltip.tokens.css +25 -0
  159. package/dist/styles/components/tree.css +139 -0
  160. package/dist/styles/components/tree.tokens.css +20 -0
  161. package/dist/styles/components/upload.css +150 -0
  162. package/dist/styles/components/upload.tokens.css +27 -0
  163. package/dist/styles/index.css +149 -0
  164. package/dist/styles/operations/collapse.css +84 -0
  165. package/dist/styles/operations/popup.css +189 -0
  166. package/dist/styles/operations/tabset.css +57 -0
  167. package/dist/utils/state-illustration.d.ts +31 -0
  168. package/dist/utils/state-illustration.js +156 -0
  169. package/package.json +62 -0
@@ -0,0 +1,132 @@
1
+ import { type PropType, type SlotsType, type VNodeChild } from 'vue';
2
+ export type BadgeTone = 'default' | 'primary' | 'info' | 'success' | 'warning' | 'error';
3
+ export type BadgeShape = 'soft' | 'outline' | 'plain';
4
+ export type BadgeSize = 'sm' | 'md';
5
+ export type BadgeDot = 'filled' | 'ring';
6
+ /** 状态点语义(与 `tone` 同源,只是换了一套更常用的叫法) */
7
+ export type BadgeStatus = 'success' | 'processing' | 'default' | 'warning' | 'error';
8
+ /**
9
+ * 徽标 / 标签 —— 三种用法,按「传了什么」自动选形态:
10
+ *
11
+ * 1. **内容徽标**(默认插槽 = 徽标文字):`tone × shape × size × dot` 的正交组合。
12
+ * 吃掉的分身:前 4 个应用各自手搓徽标(状态胶囊、准入状态、类型标签、结论徽标)。
13
+ * 2. **数字角标**(传了 `count`):独立显示,或包裹子元素后钉在其右上角
14
+ * (此时默认插槽的含义从「徽标文字」变成「被包裹的内容」,与主流库一致)。
15
+ * 3. **状态点 + 文字**(传了 `status`):`● 已完成` 这种最轻的状态表达。
16
+ *
17
+ * 形态(`shape`):
18
+ * - `soft`:浅底 + 同色文字(标签)
19
+ * - `outline`:浅底 + 同色描边;`tone="default"` 时退化为白底 + 中性描边 + 正文色(状态胶囊)
20
+ * - `plain`:无底无框,靠圆点表达状态
21
+ *
22
+ * @example 内容徽标
23
+ * <Badge tone="success" shape="outline" size="md" dot="filled">运行中</Badge>
24
+ *
25
+ * @example 数字角标(包裹子元素时钉右上角)
26
+ * <Badge count={12}><Avatar letter="张" /></Badge>
27
+ * <Badge count={120} :overflow-count="99" /> // 渲染 99+
28
+ *
29
+ * @example 状态点
30
+ * <Badge status="processing" text="运行中" />
31
+ */
32
+ export declare const Badge: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
33
+ tone: {
34
+ type: PropType<BadgeTone>;
35
+ default: string;
36
+ };
37
+ /** 形态:soft(浅底)/ outline(描边)/ plain(无底 + 圆点) */
38
+ shape: {
39
+ type: PropType<BadgeShape>;
40
+ default: string;
41
+ };
42
+ size: {
43
+ type: PropType<BadgeSize>;
44
+ default: string;
45
+ };
46
+ /** 前置圆点:`true`(= 实心)/ `'filled'` 实心 / `'ring'` 空心;不传则无圆点 */
47
+ dot: {
48
+ type: PropType<boolean | BadgeDot>;
49
+ default: undefined;
50
+ };
51
+ /** 数字角标(给了就走角标形态;默认插槽随之变成「被包裹的内容」) */
52
+ count: {
53
+ type: NumberConstructor;
54
+ default: undefined;
55
+ };
56
+ /** 数字上限,超出显示 `n+` */
57
+ overflowCount: {
58
+ type: NumberConstructor;
59
+ default: number;
60
+ };
61
+ /** `count` 为 0 时是否仍显示 */
62
+ showZero: {
63
+ type: BooleanConstructor;
64
+ default: boolean;
65
+ };
66
+ /** 状态点语义(给了就走状态形态) */
67
+ status: {
68
+ type: PropType<BadgeStatus>;
69
+ default: undefined;
70
+ };
71
+ /** 状态文字(`status` 形态;也可用默认插槽) */
72
+ text: {
73
+ type: StringConstructor;
74
+ default: undefined;
75
+ };
76
+ }>, () => import("vue/jsx-runtime").JSX.Element | null, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
77
+ tone: {
78
+ type: PropType<BadgeTone>;
79
+ default: string;
80
+ };
81
+ /** 形态:soft(浅底)/ outline(描边)/ plain(无底 + 圆点) */
82
+ shape: {
83
+ type: PropType<BadgeShape>;
84
+ default: string;
85
+ };
86
+ size: {
87
+ type: PropType<BadgeSize>;
88
+ default: string;
89
+ };
90
+ /** 前置圆点:`true`(= 实心)/ `'filled'` 实心 / `'ring'` 空心;不传则无圆点 */
91
+ dot: {
92
+ type: PropType<boolean | BadgeDot>;
93
+ default: undefined;
94
+ };
95
+ /** 数字角标(给了就走角标形态;默认插槽随之变成「被包裹的内容」) */
96
+ count: {
97
+ type: NumberConstructor;
98
+ default: undefined;
99
+ };
100
+ /** 数字上限,超出显示 `n+` */
101
+ overflowCount: {
102
+ type: NumberConstructor;
103
+ default: number;
104
+ };
105
+ /** `count` 为 0 时是否仍显示 */
106
+ showZero: {
107
+ type: BooleanConstructor;
108
+ default: boolean;
109
+ };
110
+ /** 状态点语义(给了就走状态形态) */
111
+ status: {
112
+ type: PropType<BadgeStatus>;
113
+ default: undefined;
114
+ };
115
+ /** 状态文字(`status` 形态;也可用默认插槽) */
116
+ text: {
117
+ type: StringConstructor;
118
+ default: undefined;
119
+ };
120
+ }>> & Readonly<{}>, {
121
+ text: string;
122
+ size: BadgeSize;
123
+ dot: boolean | BadgeDot;
124
+ shape: BadgeShape;
125
+ count: number;
126
+ status: BadgeStatus;
127
+ tone: BadgeTone;
128
+ overflowCount: number;
129
+ showZero: boolean;
130
+ }, SlotsType<{
131
+ default?: () => VNodeChild;
132
+ }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,99 @@
1
+ import { defineComponent, computed, createVNode } from "vue";
2
+ const STATUS_TONE = {
3
+ success: "success",
4
+ processing: "primary",
5
+ default: "default",
6
+ warning: "warning",
7
+ error: "error"
8
+ };
9
+ const Badge = /* @__PURE__ */ defineComponent({
10
+ name: "Badge",
11
+ inheritAttrs: false,
12
+ props: {
13
+ tone: {
14
+ type: String,
15
+ default: "default"
16
+ },
17
+ /** 形态:soft(浅底)/ outline(描边)/ plain(无底 + 圆点) */
18
+ shape: {
19
+ type: String,
20
+ default: "soft"
21
+ },
22
+ size: {
23
+ type: String,
24
+ default: "sm"
25
+ },
26
+ /** 前置圆点:`true`(= 实心)/ `'filled'` 实心 / `'ring'` 空心;不传则无圆点 */
27
+ dot: {
28
+ type: [Boolean, String],
29
+ default: void 0
30
+ },
31
+ /** 数字角标(给了就走角标形态;默认插槽随之变成「被包裹的内容」) */
32
+ count: {
33
+ type: Number,
34
+ default: void 0
35
+ },
36
+ /** 数字上限,超出显示 `n+` */
37
+ overflowCount: {
38
+ type: Number,
39
+ default: 99
40
+ },
41
+ /** `count` 为 0 时是否仍显示 */
42
+ showZero: {
43
+ type: Boolean,
44
+ default: false
45
+ },
46
+ /** 状态点语义(给了就走状态形态) */
47
+ status: {
48
+ type: String,
49
+ default: void 0
50
+ },
51
+ /** 状态文字(`status` 形态;也可用默认插槽) */
52
+ text: {
53
+ type: String,
54
+ default: void 0
55
+ }
56
+ },
57
+ slots: Object,
58
+ setup(props, {
59
+ slots,
60
+ attrs
61
+ }) {
62
+ const countText = computed(() => {
63
+ if (props.count === void 0) return null;
64
+ if (props.count === 0 && !props.showZero) return null;
65
+ return props.count > props.overflowCount ? `${props.overflowCount}+` : String(props.count);
66
+ });
67
+ const dotKind = computed(() => props.dot === true ? "filled" : props.dot === false || props.dot === void 0 ? void 0 : props.dot);
68
+ return () => {
69
+ const style = attrs.style;
70
+ const extra = attrs.class;
71
+ if (props.status) {
72
+ return createVNode("span", {
73
+ "class": ["mh-badge--status", `mh-badge--${STATUS_TONE[props.status]}`, extra].filter(Boolean).join(" "),
74
+ "style": style
75
+ }, [createVNode("span", {
76
+ "class": "mh-badge__status-dot"
77
+ }, null), props.text ?? slots.default?.()]);
78
+ }
79
+ if (props.count !== void 0) {
80
+ if (countText.value === null && !slots.default) return null;
81
+ return createVNode("span", {
82
+ "class": ["mh-badge--count", extra].filter(Boolean).join(" "),
83
+ "style": style
84
+ }, [slots.default?.(), countText.value !== null ? createVNode("sup", {
85
+ "class": ["mh-badge__count", `mh-badge--${props.tone}`].join(" ")
86
+ }, [countText.value]) : null]);
87
+ }
88
+ return createVNode("span", {
89
+ "class": ["mh-badge", `mh-badge--${props.tone}`, `mh-badge--${props.shape}`, `mh-badge--${props.size}`, dotKind.value ? `mh-badge--dot-${dotKind.value}` : "", extra].filter(Boolean).join(" "),
90
+ "style": style
91
+ }, [dotKind.value ? createVNode("span", {
92
+ "class": "mh-badge__dot"
93
+ }, null) : null, slots.default?.()]);
94
+ };
95
+ }
96
+ });
97
+ export {
98
+ Badge
99
+ };