tt-design-web-vue 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 (227) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +120 -0
  3. package/dist/index.cjs +2 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.js +5220 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/rich-text.css +1 -0
  8. package/dist/style.cjs +2 -0
  9. package/dist/style.cjs.map +1 -0
  10. package/dist/style.css +1 -0
  11. package/dist/style.js +2 -0
  12. package/dist/style.js.map +1 -0
  13. package/dist/types/components/ActivityFeed/ActivityFeed.vue.d.ts +13 -0
  14. package/dist/types/components/ActivityFeed/index.d.ts +2 -0
  15. package/dist/types/components/Alert/Alert.vue.d.ts +164 -0
  16. package/dist/types/components/Alert/index.d.ts +1 -0
  17. package/dist/types/components/Anchor/Anchor.vue.d.ts +12 -0
  18. package/dist/types/components/Anchor/AnchorLink.vue.d.ts +14 -0
  19. package/dist/types/components/Anchor/index.d.ts +2 -0
  20. package/dist/types/components/AttachmentList/AttachmentList.vue.d.ts +19 -0
  21. package/dist/types/components/AttachmentList/index.d.ts +2 -0
  22. package/dist/types/components/Avatar/Avatar.vue.d.ts +153 -0
  23. package/dist/types/components/Avatar/AvatarGroup.vue.d.ts +208 -0
  24. package/dist/types/components/Avatar/avatar.d.ts +3 -0
  25. package/dist/types/components/Avatar/index.d.ts +6 -0
  26. package/dist/types/components/BackTop/BackTop.vue.d.ts +138 -0
  27. package/dist/types/components/BackTop/index.d.ts +1 -0
  28. package/dist/types/components/Badge/Badge.vue.d.ts +164 -0
  29. package/dist/types/components/Badge/index.d.ts +1 -0
  30. package/dist/types/components/Breadcrumb/Breadcrumb.vue.d.ts +108 -0
  31. package/dist/types/components/Breadcrumb/BreadcrumbItem.vue.d.ts +108 -0
  32. package/dist/types/components/Breadcrumb/index.d.ts +2 -0
  33. package/dist/types/components/Button/Button.vue.d.ts +12 -0
  34. package/dist/types/components/Button/index.d.ts +2 -0
  35. package/dist/types/components/Calendar/Calendar.vue.d.ts +205 -0
  36. package/dist/types/components/Calendar/index.d.ts +1 -0
  37. package/dist/types/components/Card/Card.vue.d.ts +179 -0
  38. package/dist/types/components/Card/index.d.ts +2 -0
  39. package/dist/types/components/CardSelect/CardSelect.vue.d.ts +56 -0
  40. package/dist/types/components/CardSelect/index.d.ts +2 -0
  41. package/dist/types/components/Carousel/Carousel.vue.d.ts +214 -0
  42. package/dist/types/components/Carousel/CarouselItem.vue.d.ts +112 -0
  43. package/dist/types/components/Carousel/index.d.ts +2 -0
  44. package/dist/types/components/Cascader/Cascader.vue.d.ts +704 -0
  45. package/dist/types/components/Cascader/index.d.ts +3 -0
  46. package/dist/types/components/Chart/Chart.vue.d.ts +47 -0
  47. package/dist/types/components/Chart/index.d.ts +2 -0
  48. package/dist/types/components/Checkbox/Checkbox.vue.d.ts +21 -0
  49. package/dist/types/components/Checkbox/CheckboxGroup.vue.d.ts +20 -0
  50. package/dist/types/components/Checkbox/index.d.ts +5 -0
  51. package/dist/types/components/Collapse/Collapse.vue.d.ts +150 -0
  52. package/dist/types/components/Collapse/CollapseItem.vue.d.ts +146 -0
  53. package/dist/types/components/Collapse/index.d.ts +2 -0
  54. package/dist/types/components/Color/Color.vue.d.ts +26 -0
  55. package/dist/types/components/Color/index.d.ts +2 -0
  56. package/dist/types/components/ColorPicker/ColorPicker.vue.d.ts +195 -0
  57. package/dist/types/components/ColorPicker/index.d.ts +3 -0
  58. package/dist/types/components/Comment/Comment.vue.d.ts +46 -0
  59. package/dist/types/components/Comment/index.d.ts +2 -0
  60. package/dist/types/components/Container/Container.vue.d.ts +12 -0
  61. package/dist/types/components/Container/index.d.ts +1 -0
  62. package/dist/types/components/DatePicker/DatePicker.vue.d.ts +568 -0
  63. package/dist/types/components/DatePicker/index.d.ts +3 -0
  64. package/dist/types/components/Descriptions/Descriptions.vue.d.ts +138 -0
  65. package/dist/types/components/Descriptions/DescriptionsItem.vue.d.ts +150 -0
  66. package/dist/types/components/Descriptions/index.d.ts +2 -0
  67. package/dist/types/components/Dialog/Dialog.vue.d.ts +360 -0
  68. package/dist/types/components/Dialog/index.d.ts +1 -0
  69. package/dist/types/components/Divider/Divider.vue.d.ts +123 -0
  70. package/dist/types/components/Divider/index.d.ts +1 -0
  71. package/dist/types/components/Drawer/Drawer.vue.d.ts +398 -0
  72. package/dist/types/components/Drawer/index.d.ts +1 -0
  73. package/dist/types/components/Dropdown/Dropdown.vue.d.ts +1610 -0
  74. package/dist/types/components/Dropdown/DropdownItem.vue.d.ts +12 -0
  75. package/dist/types/components/Dropdown/DropdownMenu.vue.d.ts +12 -0
  76. package/dist/types/components/Dropdown/index.d.ts +3 -0
  77. package/dist/types/components/EChartsWrapper/EChartsWrapper.vue.d.ts +39 -0
  78. package/dist/types/components/EChartsWrapper/index.d.ts +2 -0
  79. package/dist/types/components/Empty/Empty.vue.d.ts +126 -0
  80. package/dist/types/components/Empty/index.d.ts +1 -0
  81. package/dist/types/components/FilePreview/FilePreview.vue.d.ts +67 -0
  82. package/dist/types/components/FilePreview/index.d.ts +2 -0
  83. package/dist/types/components/FloatButton/FloatButton.vue.d.ts +44 -0
  84. package/dist/types/components/FloatButton/index.d.ts +2 -0
  85. package/dist/types/components/Font/Font.vue.d.ts +18 -0
  86. package/dist/types/components/Font/index.d.ts +2 -0
  87. package/dist/types/components/Form/Form.vue.d.ts +221 -0
  88. package/dist/types/components/Form/FormItem.vue.d.ts +17 -0
  89. package/dist/types/components/Form/index.d.ts +4 -0
  90. package/dist/types/components/Grid/Col.vue.d.ts +160 -0
  91. package/dist/types/components/Grid/Row.vue.d.ts +120 -0
  92. package/dist/types/components/Grid/index.d.ts +2 -0
  93. package/dist/types/components/Icon/Icon.vue.d.ts +30 -0
  94. package/dist/types/components/Icon/gradient.d.ts +10 -0
  95. package/dist/types/components/Icon/index.d.ts +1 -0
  96. package/dist/types/components/Image/Image.vue.d.ts +285 -0
  97. package/dist/types/components/Image/index.d.ts +1 -0
  98. package/dist/types/components/Input/Input.vue.d.ts +407 -0
  99. package/dist/types/components/Input/index.d.ts +2 -0
  100. package/dist/types/components/InputNumber/InputNumber.vue.d.ts +282 -0
  101. package/dist/types/components/InputNumber/index.d.ts +2 -0
  102. package/dist/types/components/Layout/Layout.vue.d.ts +27 -0
  103. package/dist/types/components/Layout/index.d.ts +1 -0
  104. package/dist/types/components/Link/Link.vue.d.ts +148 -0
  105. package/dist/types/components/Link/index.d.ts +1 -0
  106. package/dist/types/components/List/List.vue.d.ts +26 -0
  107. package/dist/types/components/List/ListItem.vue.d.ts +27 -0
  108. package/dist/types/components/List/index.d.ts +2 -0
  109. package/dist/types/components/Loading/Loading.vue.d.ts +12 -0
  110. package/dist/types/components/Loading/index.d.ts +3 -0
  111. package/dist/types/components/Masonry/Masonry.vue.d.ts +35 -0
  112. package/dist/types/components/Masonry/index.d.ts +2 -0
  113. package/dist/types/components/Menu/Menu.vue.d.ts +235 -0
  114. package/dist/types/components/Menu/MenuItem.vue.d.ts +295 -0
  115. package/dist/types/components/Menu/MenuItemGroup.vue.d.ts +14 -0
  116. package/dist/types/components/Menu/SubMenu.vue.d.ts +216 -0
  117. package/dist/types/components/Menu/index.d.ts +4 -0
  118. package/dist/types/components/Message/index.d.ts +9 -0
  119. package/dist/types/components/Money/Money.vue.d.ts +30 -0
  120. package/dist/types/components/Money/index.d.ts +2 -0
  121. package/dist/types/components/Notification/index.d.ts +9 -0
  122. package/dist/types/components/Pagination/Pagination.vue.d.ts +3 -0
  123. package/dist/types/components/Pagination/index.d.ts +1 -0
  124. package/dist/types/components/Plate/Plate.vue.d.ts +46 -0
  125. package/dist/types/components/Plate/index.d.ts +2 -0
  126. package/dist/types/components/Popconfirm/Popconfirm.vue.d.ts +23 -0
  127. package/dist/types/components/Popconfirm/index.d.ts +1 -0
  128. package/dist/types/components/Popover/Popover.vue.d.ts +19 -0
  129. package/dist/types/components/Popover/index.d.ts +1 -0
  130. package/dist/types/components/Progress/Progress.vue.d.ts +180 -0
  131. package/dist/types/components/Progress/index.d.ts +1 -0
  132. package/dist/types/components/QRCode/QRCode.vue.d.ts +43 -0
  133. package/dist/types/components/QRCode/index.d.ts +2 -0
  134. package/dist/types/components/QueryForm/QueryForm.vue.d.ts +227 -0
  135. package/dist/types/components/QueryForm/index.d.ts +1 -0
  136. package/dist/types/components/Radio/Radio.vue.d.ts +20 -0
  137. package/dist/types/components/Radio/RadioButton.vue.d.ts +12 -0
  138. package/dist/types/components/Radio/RadioGroup.vue.d.ts +20 -0
  139. package/dist/types/components/Radio/index.d.ts +6 -0
  140. package/dist/types/components/Rate/Rate.vue.d.ts +120 -0
  141. package/dist/types/components/Rate/index.d.ts +3 -0
  142. package/dist/types/components/Result/Result.vue.d.ts +136 -0
  143. package/dist/types/components/Result/index.d.ts +1 -0
  144. package/dist/types/components/RichText/RichText.vue.d.ts +42 -0
  145. package/dist/types/components/RichText/index.d.ts +2 -0
  146. package/dist/types/components/SearchFilter/SearchFilter.vue.d.ts +14 -0
  147. package/dist/types/components/SearchFilter/index.d.ts +1 -0
  148. package/dist/types/components/Segmented/Segmented.vue.d.ts +24 -0
  149. package/dist/types/components/Segmented/index.d.ts +3 -0
  150. package/dist/types/components/Select/Select.vue.d.ts +56 -0
  151. package/dist/types/components/Select/index.d.ts +3 -0
  152. package/dist/types/components/Skeleton/Skeleton.vue.d.ts +140 -0
  153. package/dist/types/components/Skeleton/SkeletonItem.vue.d.ts +26 -0
  154. package/dist/types/components/Skeleton/index.d.ts +2 -0
  155. package/dist/types/components/Space/Space.vue.d.ts +184 -0
  156. package/dist/types/components/Space/SpaceCompact.vue.d.ts +23 -0
  157. package/dist/types/components/Space/index.d.ts +579 -0
  158. package/dist/types/components/Spin/Spin.vue.d.ts +23 -0
  159. package/dist/types/components/Spin/index.d.ts +3 -0
  160. package/dist/types/components/Splitter/Splitter.vue.d.ts +146 -0
  161. package/dist/types/components/Splitter/SplitterPanel.vue.d.ts +144 -0
  162. package/dist/types/components/Splitter/index.d.ts +2 -0
  163. package/dist/types/components/Statistic/Statistic.vue.d.ts +158 -0
  164. package/dist/types/components/Statistic/index.d.ts +1 -0
  165. package/dist/types/components/Steps/Step.vue.d.ts +136 -0
  166. package/dist/types/components/Steps/Steps.vue.d.ts +148 -0
  167. package/dist/types/components/Steps/index.d.ts +2 -0
  168. package/dist/types/components/Switch/Switch.vue.d.ts +238 -0
  169. package/dist/types/components/Switch/index.d.ts +3 -0
  170. package/dist/types/components/Table/Table.vue.d.ts +38 -0
  171. package/dist/types/components/Table/TableColumn.vue.d.ts +4 -0
  172. package/dist/types/components/Table/TableOperationColumn.vue.d.ts +27 -0
  173. package/dist/types/components/Table/index.d.ts +3 -0
  174. package/dist/types/components/Tabs/TabPane.vue.d.ts +14 -0
  175. package/dist/types/components/Tabs/Tabs.vue.d.ts +19 -0
  176. package/dist/types/components/Tabs/index.d.ts +4 -0
  177. package/dist/types/components/Tag/CheckableTag.vue.d.ts +23 -0
  178. package/dist/types/components/Tag/Tag.vue.d.ts +150 -0
  179. package/dist/types/components/Tag/index.d.ts +479 -0
  180. package/dist/types/components/TimePicker/TimePicker.vue.d.ts +551 -0
  181. package/dist/types/components/TimePicker/index.d.ts +3 -0
  182. package/dist/types/components/Timeline/Timeline.vue.d.ts +60 -0
  183. package/dist/types/components/Timeline/TimelineItem.vue.d.ts +144 -0
  184. package/dist/types/components/Timeline/index.d.ts +2 -0
  185. package/dist/types/components/Tooltip/Tooltip.vue.d.ts +19 -0
  186. package/dist/types/components/Tooltip/index.d.ts +1 -0
  187. package/dist/types/components/TopicSwitch/TopicSwitch.vue.d.ts +36 -0
  188. package/dist/types/components/TopicSwitch/index.d.ts +3 -0
  189. package/dist/types/components/Tour/Tour.vue.d.ts +222 -0
  190. package/dist/types/components/Tour/index.d.ts +2 -0
  191. package/dist/types/components/Transfer/Transfer.vue.d.ts +29 -0
  192. package/dist/types/components/Transfer/index.d.ts +3 -0
  193. package/dist/types/components/Tree/Tree.vue.d.ts +5857 -0
  194. package/dist/types/components/Tree/index.d.ts +3 -0
  195. package/dist/types/components/TreeSelect/TreeSelect.vue.d.ts +990 -0
  196. package/dist/types/components/TreeSelect/index.d.ts +3 -0
  197. package/dist/types/components/Upload/Upload.vue.d.ts +322 -0
  198. package/dist/types/components/Upload/index.d.ts +3 -0
  199. package/dist/types/components/UserDisplay/UserDisplay.vue.d.ts +21 -0
  200. package/dist/types/components/UserDisplay/index.d.ts +1 -0
  201. package/dist/types/components/Watermark/Watermark.vue.d.ts +13 -0
  202. package/dist/types/components/Watermark/index.d.ts +1 -0
  203. package/dist/types/index.d.ts +119 -0
  204. package/dist/types/style.d.ts +0 -0
  205. package/dist/types/theme.d.ts +5 -0
  206. package/docs/component-compatibility.md +85 -0
  207. package/docs/component-manifest.json +100 -0
  208. package/docs/components/button.md +32 -0
  209. package/docs/components/chart.md +37 -0
  210. package/docs/components/container.md +28 -0
  211. package/docs/components/dialog.md +46 -0
  212. package/docs/components/echarts-wrapper.md +46 -0
  213. package/docs/components/form.md +67 -0
  214. package/docs/components/grid.md +32 -0
  215. package/docs/components/icon.md +45 -0
  216. package/docs/components/index.md +36 -0
  217. package/docs/components/loading.md +46 -0
  218. package/docs/components/message.md +26 -0
  219. package/docs/components/qr-code.md +49 -0
  220. package/docs/components/rich-text.md +65 -0
  221. package/docs/components/select.md +71 -0
  222. package/docs/components/table.md +44 -0
  223. package/docs/components/upload.md +40 -0
  224. package/docs/index.md +35 -0
  225. package/docs/migration-from-workspace.md +79 -0
  226. package/docs/theme.md +100 -0
  227. package/package.json +88 -0
@@ -0,0 +1,71 @@
1
+ # Select
2
+
3
+ 从根入口导入:
4
+
5
+ ```ts
6
+ import { TtSelect } from 'tt-design-web-vue';
7
+ import type { SelectOption, SelectValue } from 'tt-design-web-vue';
8
+ ```
9
+
10
+ ## 示例
11
+
12
+ ```vue
13
+ <script setup lang="ts">
14
+ import { ref } from 'vue';
15
+ import { TtSelect } from 'tt-design-web-vue';
16
+
17
+ const value = ref('a');
18
+ const options = [
19
+ { label: '选项 A', value: 'a' },
20
+ { label: '选项 B', value: 'b' },
21
+ { label: '不可选项', value: 'disabled', disabled: true },
22
+ ];
23
+ </script>
24
+
25
+ <template>
26
+ <tt-select v-model="value" :options="options" placeholder="请选择" style="width: 240px" />
27
+ </template>
28
+ ```
29
+
30
+ 可交互预览、受控值与底部插槽示例见本地 Storybook:`yarn storybook`。
31
+
32
+ ## Props
33
+
34
+ | 名称 | 类型 | 默认值 | 说明 |
35
+ | --- | --- | --- | --- |
36
+ | `modelValue` | `SelectValue \| SelectValue[]` | — | 受控值,由 `defineModel` 提供。 |
37
+ | `options` | `SelectOptionItem[]` | `[]` | 无默认插槽内容时渲染的普通选项或分组选项列表。 |
38
+ | `popperClass` | `string` | `''` | 传给浮层的类名。 |
39
+ | `searchable` | `boolean` | `false` | 显示 TT 自定义下拉搜索框;与 Element Plus 的 `filterable` 原生搜索互不冲突。 |
40
+ | `showSelectAll` | `boolean` | `false` | 多选时在下拉面板底部显示全选操作,支持普通和分组选项。 |
41
+
42
+ ```ts
43
+ export type SelectValue = string | number | boolean;
44
+
45
+ export interface SelectOption {
46
+ label: string;
47
+ value: SelectValue;
48
+ disabled?: boolean;
49
+ }
50
+
51
+ export interface SelectOptionGroup {
52
+ label: string;
53
+ options: SelectOption[];
54
+ disabled?: boolean;
55
+ }
56
+
57
+ export type SelectOptionItem = SelectOption | SelectOptionGroup;
58
+ ```
59
+
60
+ ## Events、插槽与实例方法
61
+
62
+ | 类别 | 项目 | 说明 |
63
+ | --- | --- | --- |
64
+ | Event | `update:modelValue` | 由 `defineModel` 提供。 |
65
+ | Slot | `default` | 自定义选项内容;存在时替代 `options` 自动渲染。 |
66
+ | Slot | `footer` | 下拉面板底部内容。 |
67
+ | Expose | `selectRef`、`focus()`、`blur()` | 转发内部选择器实例与焦点控制。 |
68
+
69
+ 其他未显式声明的属性会通过 `$attrs` 透传。
70
+
71
+ **源码依据**:`src/components/Select/Select.vue:2-71`;`src/components/Select/index.ts:1-4`;`src/index.ts:75-76`。
@@ -0,0 +1,44 @@
1
+ # Table
2
+
3
+ 从根入口导入:
4
+
5
+ ```ts
6
+ import { TtTable, TtTableColumn, TtTableOperationColumn } from 'tt-design-web-vue';
7
+ ```
8
+
9
+ ## Table
10
+
11
+ `Table` 未显式声明 props 或 emits;传入的属性通过 `$attrs` 透传给 `ElTable`。
12
+
13
+ | 类别 | 项目 | 说明 |
14
+ | --- | --- | --- |
15
+ | Slots | `default` | 表格列内容。 |
16
+ | Slots | `empty` | 空状态内容。 |
17
+ | Slots | `append` | 表格末尾附加内容。 |
18
+ | Expose | `tableRef` | 内部 `ElTable` 引用。 |
19
+ | Expose | `clearSelection`、`toggleRowSelection`、`toggleAllSelection`、`toggleRowExpansion`、`setCurrentRow`、`clearSort`、`clearFilter`、`doLayout`、`sort` | 转发底层表格方法。 |
20
+
21
+ 各个底层方法的参数与返回值以 Element Plus 版本文档为准。
22
+
23
+ ## TableColumn
24
+
25
+ `TableColumn` 未显式声明 props、emits 或 expose;属性透传给 `ElTableColumn`。
26
+
27
+ | 类别 | 项目 |
28
+ | --- | --- |
29
+ | Slots | `default`、`header` |
30
+
31
+ ## TableOperationColumn
32
+
33
+ | Prop | 类型 | 默认值 | 说明 |
34
+ | --- | --- | --- | --- |
35
+ | `label` | `string` | `'操作'` | 操作列表头文案。 |
36
+ | `showHeaderTools` | `boolean` | `true` | 是否展示表头工具。 |
37
+ | `fixed` | 未显式收窄 | `'right'` | 固定列位置。 |
38
+
39
+ | 类别 | 项目 | 说明 |
40
+ | --- | --- | --- |
41
+ | Event | `header-tools-click` | 参数为 `MouseEvent`。 |
42
+ | Slots | `default`、`header` | 操作内容与自定义表头。 |
43
+
44
+ **源码依据**:`src/components/Table/Table.vue:20-71`;`src/components/Table/TableColumn.vue`;`src/components/Table/TableOperationColumn.vue`;`src/components/Table/index.ts:1-3`;`src/index.ts:87`。
@@ -0,0 +1,40 @@
1
+ # Upload
2
+
3
+ 从根入口导入:
4
+
5
+ ```ts
6
+ import { TtUpload } from 'tt-design-web-vue';
7
+ import type { UploadSize } from 'tt-design-web-vue';
8
+ ```
9
+
10
+ ## 示例
11
+
12
+ ```vue
13
+ <template>
14
+ <tt-upload>
15
+ 选择文件
16
+ </tt-upload>
17
+ </template>
18
+ ```
19
+
20
+ ## Props
21
+
22
+ | 名称 | 类型 | 默认值 | 说明 |
23
+ | --- | --- | --- | --- |
24
+ | `pictureCardWidth` | `number` | `60` | 图片卡片展示宽度。 |
25
+ | `showMetaInfo` | `boolean` | `false` | 是否展示文件元信息。 |
26
+ | `size` | `'large' \| 'small'` | `'large'` | 上传区域尺寸。 |
27
+
28
+ `UploadSize` 从根入口以类型形式导出。
29
+
30
+ ## Events、插槽与实例方法
31
+
32
+ | 类别 | 项目 | 说明 |
33
+ | --- | --- | --- |
34
+ | Events | — | 源码未显式声明;其余事件由 `$attrs` 透传。 |
35
+ | Slots | `default`、`tip`、`file` | 上传触发区、提示与文件项内容。 |
36
+ | Expose | `uploadRef`、`submit()`、`abort()`、`clearFiles()`、`handleStart()`、`handleRemove()` | 转发内部上传实例与常用操作。 |
37
+
38
+ 其他属性同样通过 `$attrs` 透传给底层上传组件;方法参数与返回值以 Element Plus 当前版本为准。
39
+
40
+ **源码依据**:`src/components/Upload/Upload.vue:47-60,108-139`;`src/components/Upload/index.ts:1-3`;`src/index.ts:103,108`。
package/docs/index.md ADDED
@@ -0,0 +1,35 @@
1
+ # TT Design Vue
2
+
3
+ Vue 3 + Element Plus 的 TT Design 风格组件库。
4
+
5
+ ## 开始使用
6
+
7
+ ```bash
8
+ yarn add vue element-plus tt-design-web-vue
9
+ ```
10
+
11
+ ```ts
12
+ import 'element-plus/dist/index.css';
13
+ import 'tt-design-web-vue/style.css';
14
+ ```
15
+
16
+ - [主题变量与覆盖方式](./theme)
17
+ - [从 workspace 迁出说明](./migration-from-workspace)
18
+ - [React 基线兼容清单](./component-compatibility)
19
+ - [首批组件 API 文档](./components/)
20
+
21
+ ## 组件展示
22
+
23
+ 组件的交互预览、Props Controls、事件记录与状态示例由 Storybook 提供。本地安装依赖后运行:
24
+
25
+ ```bash
26
+ yarn storybook
27
+ ```
28
+
29
+ VitePress 保留安装、主题、迁出与兼容性等长文档;组件 API 页提供可复制的最小用法和源码边界。
30
+
31
+ ## 文档原则
32
+
33
+ - 文档以本项目 `src/` 源码为唯一 API 事实来源。
34
+ - 标记为 `exact-name` 的项目仅说明根入口名称一致,不承诺 API 行为一致。
35
+ - 宿主应用应先加载 Element Plus 样式,再加载 TT Design 样式。
@@ -0,0 +1,79 @@
1
+ # 从 workspace 迁出
2
+
3
+ ## 目标
4
+
5
+ 本项目将原 Vue 组件库从以下 source-first workspace 路径复制到独立 Git 项目:
6
+
7
+ ```text
8
+ /Users/meng/Documents/productcode/platform/apps/frontend/web/packages/tt-design-vue
9
+ ```
10
+
11
+ 独立项目位置:
12
+
13
+ ```text
14
+ /Users/meng/Documents/productcode/tt-design-vue
15
+ ```
16
+
17
+ 迁出后的包名仍为 `tt-design-web-vue`,首个可安装版本为 `0.1.0-rc.0`。
18
+
19
+ ## 保留的兼容基线
20
+
21
+ - 完整保留源 `src/`:根入口、全部组件目录、类型导出、服务 API 与全量 SCSS 样式。
22
+ - 保留现有根入口中的基础组件和扩展/组合组件;本次不因 React 基线范围而删除 Vue 现有导出。
23
+ - 主题 token 只保留 `--el-*` 到 `--tt-*` 的 CSS variable fallback;原 `--micro-base-*` / `--micro-app-*` 微前端变量与 `.app-shell` 选择器已移除,宿主主题统一经 Element Plus 变量继承。
24
+ - 保留 `tt-design-web-vue/dist/style.css` 入口作为旧调用方的兼容 CSS 路径。
25
+
26
+ ## 独立化变化
27
+
28
+ | 项目 | 原 workspace 包 | 独立项目 |
29
+ | --- | --- | --- |
30
+ | JS 入口 | `src/index.ts` | `dist/index.js` / `dist/index.cjs` |
31
+ | 类型入口 | `src/index.ts` | `dist/types/index.d.ts` |
32
+ | CSS 入口 | `src/styles/index.scss` | `dist/style.css` |
33
+ | 解析方式 | Vite alias 直连源码 | 标准 package `exports` |
34
+ | 构建依赖 | 继承 workspace | 自带 Vite、Vue TypeScript、Sass 构建配置 |
35
+ | 包状态 | 私有 source-first | 可用于预发布的独立 package |
36
+
37
+ ## 不在本次范围内的内容
38
+
39
+ 以下对象保持原样,未修改:
40
+
41
+ - 原 `packages/tt-design-vue` 目录及其中所有文件;
42
+ - platform workspace 的 `package.json`、锁文件、Vite alias、TypeScript paths;
43
+ - `shared-components` 的 peer dependency;
44
+ - Portal、Official、Support、User 等应用的任何消费代码。
45
+
46
+ 因此,独立库构建失败或预发布未通过时,不需要回滚任何业务应用。
47
+
48
+ ## 后续消费者切换建议
49
+
50
+ 独立包验证并发布后,另起迁移任务,按以下顺序切换:
51
+
52
+ 1. 先处理 `shared-components`,明确其 peer dependency 与样式入口;
53
+ 2. 逐个切换 Portal、Official、Support、User;
54
+ 3. 每个应用仅在安装独立预发布包后删除其对应的 Vite alias / TypeScript path;
55
+ 4. 对每个应用单独执行 build、类型检查、E2E 和视觉验证;
56
+ 5. 保留旧 workspace 包,直到所有消费者稳定并具备可回退的发布版本。
57
+
58
+ ## 发布前检查
59
+
60
+ 在独立项目根目录运行:
61
+
62
+ ```bash
63
+ yarn lint
64
+ yarn test
65
+ yarn build
66
+ yarn test:package
67
+ npm pack --dry-run
68
+ ```
69
+
70
+ 检查包内至少包含:
71
+
72
+ ```text
73
+ dist/index.js
74
+ dist/index.cjs
75
+ dist/types/index.d.ts
76
+ dist/style.css
77
+ ```
78
+
79
+ 实际向 registry 发布或变更 `next` 标签属于对外操作,必须在执行前再次获得明确确认。
package/docs/theme.md ADDED
@@ -0,0 +1,100 @@
1
+ # 主题
2
+
3
+ `tt-design-web-vue` 使用 CSS Custom Properties 作为公开主题契约。组件样式从 `src/styles/index.scss` 聚合,构建后由 `tt-design-web-vue/style.css` 提供。
4
+
5
+ ## 主题模式
6
+
7
+ 宿主通过 `html[data-tt-theme]` 选择主题模式:
8
+
9
+ ```ts
10
+ import { applyTheme } from 'tt-design-web-vue';
11
+
12
+ applyTheme('light'); // light
13
+ applyTheme('dark'); // dark
14
+ applyTheme('system'); // 跟随 prefers-color-scheme
15
+ ```
16
+
17
+ 也可以直接设置 HTML 属性:
18
+
19
+ ```html
20
+ <html data-tt-theme="dark">
21
+ ```
22
+
23
+ 组件库不保存主题状态,也不依赖路由或业务 store。`system` 模式通过 CSS `prefers-color-scheme` 在浏览器侧切换,弹层和挂载到 `body` 的组件同样继承该主题。
24
+
25
+ ## 加载顺序
26
+
27
+ Element Plus 负责基础组件的结构与默认变量,TT Design 在其上覆盖视觉细节。宿主应先加载 Element Plus 样式,再加载 TT Design 样式:
28
+
29
+ ```ts
30
+ import 'element-plus/dist/index.css';
31
+ import 'tt-design-web-vue/style.css';
32
+ ```
33
+
34
+ ## 主色继承顺序
35
+
36
+ 主色 token 直接继承 Element Plus 主题变量。以 `--tt-color-primary-6` 为例,其值依次来自:
37
+
38
+ ```text
39
+ --el-color-primary
40
+ → #3388ff
41
+ ```
42
+
43
+ 其他主色色阶读取相应的 Element Plus `--el-color-primary-light-*`、`--el-color-primary-dark-2` 变量。没有宿主覆盖时,组件库使用内置 TT 默认色。宿主只需提供 Element Plus 主题(或直接覆盖 `--el-*` 变量)即可联动 TT 组件配色。
44
+
45
+ ## 可覆盖 Token
46
+
47
+ ### 色彩与文本
48
+
49
+ | 类别 | 常用变量 |
50
+ | --- | --- |
51
+ | 主色 | `--tt-color-primary-1` 至 `--tt-color-primary-7`、`--tt-color-primary`、`--tt-color-primary-hover`、`--tt-color-primary-active` |
52
+ | 状态色 | `--tt-color-success`、`--tt-color-warning`、`--tt-color-error`、`--tt-color-info` |
53
+ | 中性色 | `--tt-color-grey-0` 至 `--tt-color-grey-9` |
54
+ | 文本 | `--tt-text-title`、`--tt-text-body`、`--tt-text-secondary`、`--tt-text-placeholder`、`--tt-text-danger`、`--tt-text-warning`、`--tt-text-success` |
55
+ | 背景与边框 | `--tt-bg-white`、`--tt-bg-light`、`--tt-bg-lighter`、`--tt-bg-lightest`、`--tt-bg-subtle`、`--tt-bg-thead`、`--tt-border-color`、`--tt-border-color-light`、`--tt-border-color-dark` |
56
+
57
+ 组件样式优先使用语义变量:`--tt-bg-page`、`--tt-bg-surface`、`--tt-bg-elevated`、`--tt-bg-hover`、`--tt-bg-disabled`、`--tt-text-disabled`、`--tt-text-inverse`、`--tt-border-color-focus`、`--tt-overlay-color`、`--tt-focus-ring`、`--tt-shadow-sm`、`--tt-shadow-md` 和 `--tt-shadow-lg`。
58
+
59
+ ### 与设计规范对齐的取值
60
+
61
+ 浅色主题下,以下语义变量的取值直接对应设计规范,组件不应再各自硬编码:
62
+
63
+ | 场景 | 变量 | 浅色取值 |
64
+ | --- | --- | --- |
65
+ | 页面底色 | `--tt-bg-page` | `#f2f2f2` |
66
+ | 表头底色 | `--tt-bg-thead`(别名 `--tt-bg-light`) | `#f7f8fa` |
67
+ | 控件边框 | `--tt-border-color`(别名 `--tt-color-grey-2`) | `#e9ecf2` |
68
+ | 分割线与容器外框 | `--tt-border-color-light`(别名 `--tt-color-grey-1`) | `#f5f7fa` |
69
+ | 成功色 | `--tt-color-success` | `#35d4a7` |
70
+
71
+ 深色主题与 `system` 主题块按同一套语义变量推导,`--tt-bg-light`、`--tt-bg-subtle`、`--tt-bg-thead` 均指向 `--tt-color-grey-1`;`--tt-border-color` / `--tt-border-color-light` 分别指向 `--tt-color-grey-3` / `--tt-color-grey-2`。
72
+
73
+ ### 圆角与排版
74
+
75
+ | 类别 | 变量 |
76
+ | --- | --- |
77
+ | 圆角 | `--tt-radius-base`、`--tt-radius-lg`、`--tt-radius-round` |
78
+ | 字体 | `--tt-font-size-base`、`--tt-font-size-sm`、`--tt-line-height-base` |
79
+
80
+ ## 覆盖示例
81
+
82
+ 在加载组件库样式后,向应用根节点覆盖需要替换的 token:
83
+
84
+ ```css
85
+ :root {
86
+ --tt-color-primary-6: #2468d7;
87
+ --tt-color-primary-hover: #4d86e1;
88
+ --tt-color-primary-active: #1c50a8;
89
+ --tt-color-primary-shadow: rgb(36 104 215 / 24%);
90
+ --tt-radius-base: 6px;
91
+ }
92
+ ```
93
+
94
+ 如宿主已维护 Element Plus 主题,更推荐直接提供 `--el-color-primary` 及相关 Element Plus 变量,让 TT token 按既有 fallback 链自动继承。
95
+
96
+ ## 作用域
97
+
98
+ Token 定义在 `:root`、`[data-tt-theme='light']` 和 `[data-tt-theme='dark']`。需要隔离多应用主题时,可在具体页面容器上覆盖同名变量;如果组件使用 body-mounted overlay,主题属性应设置在 `html` 上。
99
+
100
+ 不要把旧 `platform` 的 Sass、JavaScript alias 或运行时主题模块引入本项目。主题继承只依赖标准 CSS variables(`--el-*`),不依赖旧 workspace 源码,也不再使用 `--micro-base-*` / `--micro-app-*` 微前端变量。
package/package.json ADDED
@@ -0,0 +1,88 @@
1
+ {
2
+ "name": "tt-design-web-vue",
3
+ "version": "0.1.0",
4
+ "description": "Vue 3 + Element Plus component library aligned with TT Design visual tokens.",
5
+ "type": "module",
6
+ "author": "mengxiangxin <mengxiangxin@ttpark.cn>",
7
+ "license": "MIT",
8
+ "main": "./dist/index.cjs",
9
+ "module": "./dist/index.js",
10
+ "types": "./dist/types/index.d.ts",
11
+ "style": "./dist/style.css",
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/types/index.d.ts",
15
+ "import": "./dist/index.js",
16
+ "require": "./dist/index.cjs"
17
+ },
18
+ "./style.css": "./dist/style.css",
19
+ "./rich-text.css": "./dist/rich-text.css",
20
+ "./dist/style.css": "./dist/style.css",
21
+ "./dist/rich-text.css": "./dist/rich-text.css",
22
+ "./package.json": "./package.json"
23
+ },
24
+ "files": [
25
+ "dist",
26
+ "docs",
27
+ "!docs/.vitepress",
28
+ "README.md",
29
+ "CHANGELOG.md"
30
+ ],
31
+ "sideEffects": [
32
+ "**/*.css",
33
+ "**/*.scss"
34
+ ],
35
+ "engines": {
36
+ "node": ">=18.0.0"
37
+ },
38
+ "packageManager": "yarn@1.22.22",
39
+ "publishConfig": {
40
+ "tag": "latest"
41
+ },
42
+ "resolutions": {
43
+ "vite-plugin-dts/@vue/language-core": "2.2.12"
44
+ },
45
+ "scripts": {
46
+ "build": "yarn typecheck && vite build",
47
+ "typecheck": "vue-tsc --noEmit -p tsconfig.build.json",
48
+ "lint": "vue-tsc --noEmit -p tsconfig.json && vue-tsc --noEmit -p tsconfig.test.json",
49
+ "test": "vitest run",
50
+ "test:watch": "vitest",
51
+ "test:package": "node scripts/test-package.mjs",
52
+ "docs:dev": "vitepress dev docs",
53
+ "docs:build": "vitepress build docs",
54
+ "storybook": "storybook dev -p 6006",
55
+ "storybook:build": "storybook build",
56
+ "prepack": "yarn build && yarn test:package"
57
+ },
58
+ "peerDependencies": {
59
+ "element-plus": "^2.9.10",
60
+ "vue": "^3.5.14"
61
+ },
62
+ "dependencies": {
63
+ "@element-plus/icons-vue": "^2.3.1",
64
+ "@wangeditor/editor": "^5.1.23",
65
+ "@wangeditor/editor-for-vue": "^5.1.12",
66
+ "echarts": "^6.1.0",
67
+ "qrcode": "^1.5.4"
68
+ },
69
+ "devDependencies": {
70
+ "@storybook/addon-docs": "9.0.8",
71
+ "@storybook/vue3-vite": "9.0.8",
72
+ "@types/node": "^22.15.3",
73
+ "@types/qrcode": "^1.5.6",
74
+ "@vitejs/plugin-vue": "^5.2.4",
75
+ "@vue/test-utils": "^2.4.6",
76
+ "element-plus": "^2.9.10",
77
+ "jsdom": "^26.1.0",
78
+ "sass": "^1.86.3",
79
+ "storybook": "9.0.8",
80
+ "typescript": "^5.8.3",
81
+ "vite": "^6.3.5",
82
+ "vite-plugin-dts": "^4.5.4",
83
+ "vitepress": "^1.6.3",
84
+ "vitest": "3.1.2",
85
+ "vue": "^3.5.14",
86
+ "vue-tsc": "^2.2.10"
87
+ }
88
+ }