diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..43de7ba --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "chrome", + "request": "launch", + "name": "Launch Chrome against localhost", + "url": "http://localhost:8080", + "webRoot": "${workspaceFolder}/dist" + } + ] +} diff --git a/package.json b/package.json index 122c894..c518d1b 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,9 @@ "private": true, "scripts": { "preinstall": "npx only-allow pnpm", - "start": "cd packages/demo && npm run start" + "start": "npm run build:props && npm run build:catalog && cd packages/demo && npm run start", + "build:props": "node ./scripts/build_props.mjs", + "build:catalog": "node ./scripts/build_catalog.mjs" }, "workspaces": [ "packages/*" @@ -12,10 +14,15 @@ "@commitlint/cli": "^17.3.0", "@commitlint/config-conventional": "^17.3.0", "eslint-config-psfe": "1.0.5", - "husky": "^8.0.2" + "husky": "^8.0.2", + "@babel/core": "^7.19.1", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/parser": "^7.21.2", + "babel-plugin-jsx": "^1.2.0", + "es-dirname": "^0.1.0" }, "dependencies": { "core-js": "^3.25.1", "gsap": "^3.12.2" } -} +} \ No newline at end of file diff --git a/packages/demo/index.scss b/packages/demo/index.scss index f866dbd..5796069 100644 --- a/packages/demo/index.scss +++ b/packages/demo/index.scss @@ -22,5 +22,29 @@ html, height: 0; } +.pivot-props-table { + border-collapse: collapse; + width: 100%; + font-family: Arial, sans-serif; + font-size: 18px; + th, + td { + padding: 18px 0; + text-align: center; + } + th { + background-color: var(--semi-color-bg-0); + font-weight: bold; + width: auto; + border: 2px solid var(--semi-color-border); + } + td { + width: auto; + border: 2px solid var(--semi-color-border); + } + tr { + background-color: var(--semi-color-bg-0); + } +} diff --git a/packages/demo/loaders/index.js b/packages/demo/loaders/index.js index b691249..bc351f7 100644 --- a/packages/demo/loaders/index.js +++ b/packages/demo/loaders/index.js @@ -38,7 +38,7 @@ module.exports = function loader(source) { const CodeBlockReg = /([\n\r\s\S]*?)<\/CodeBlock>/g; const H1Reg = /# (\w+)/; // eslint-disable-next-line prefer-destructuring - const component = H1Reg.exec(sourceCode)[1]; + const component = H1Reg.exec(sourceCode) && H1Reg.exec(sourceCode)[1]; let m; let importComponentsList = ''; while ((m = CodeBlockReg.exec(newSource))) { diff --git a/packages/demo/src/components/Button/.catalog.ts b/packages/demo/src/components/Button/.catalog.ts new file mode 100644 index 0000000..87f83aa --- /dev/null +++ b/packages/demo/src/components/Button/.catalog.ts @@ -0,0 +1 @@ +export const list = [{"h2":"普通样式","h3":[]},{"h2":"可禁用样式","h3":[]},{"h2":"按钮尺寸大小","h3":[]},{"h2":"自定义","h3":[]},{"h2":"点击事件","h3":[]},{"h2":"loading加载中和节流、防抖","h3":[]}] \ No newline at end of file diff --git a/packages/demo/src/components/Button/index.mdx b/packages/demo/src/components/Button/index.mdx index 63fb2a0..b52077d 100644 --- a/packages/demo/src/components/Button/index.mdx +++ b/packages/demo/src/components/Button/index.mdx @@ -1,6 +1,8 @@ +import Props from './props.mdx'; + # Button -
普通样式
+## 普通样式 @@ -8,7 +10,7 @@ -
按钮禁用
+## 可禁用样式 -
按钮尺寸
+## 按钮尺寸大小 + -
自定义颜色
+## 自定义 css 颜色(token) + + + + - +## 点击事件 -
自定义点击事件
-
加载中和节流防抖
+## loading加载中和节流、防抖 + + + diff --git a/packages/demo/src/components/Button/props.mdx b/packages/demo/src/components/Button/props.mdx new file mode 100644 index 0000000..5d0fcec --- /dev/null +++ b/packages/demo/src/components/Button/props.mdx @@ -0,0 +1,4 @@ +import Table from '../table.tsx' + export const params = [{"key":"className","value":": string","optional":true,"version":"1.0.0","description":"自定义类名"},{"key":"style","value":": React.CSSProperties","optional":true,"version":"1.0.0","description":"自定义样式"},{"key":"children","value":": React.ReactNode","optional":true,"version":"1.0.0","description":"按钮默认插槽","default":"undefined"},{"key":"style","value":": React.CSSProperties & ButtonCssTokens","optional":true,"version":"1.0.0","description":"自定义样式","default":"undefined"},{"key":"onClick","value":": React.MouseEventHandler","optional":true,"version":"1.0.0","description":"点击事件","default":"undefined"},{"key":"type","value":": 'primary' | 'default' | 'text' | 'link'","optional":true,"version":"1.0.0","description":"按钮类型","default":"'default'"},{"key":"size","value":": 'small' | 'middle' | 'large'","optional":true,"version":"1.0.0","description":"按钮是否禁用","default":"'middle'"},{"key":"disabled","value":": boolean","optional":true,"version":"1.0.0","description":"按钮尺寸","default":"false"},{"key":"loading","value":": boolean","optional":true,"version":"1.0.0","description":"按钮是否正在加载状态","default":"false"},{"key":"debounce","value":": number | {\n delay: number;\n immediate: boolean;\n}","optional":true,"version":"1.0.0","description":"按钮是否防抖,可选择是否立即执行","default":"0"},{"key":"delay","value":": number"},{"key":"immediate","value":": boolean"},{"key":"throttle","value":": number | {\n delay: number;\n immediate: boolean;\n}","optional":true,"version":"1.0.0","description":"按钮是否节流","default":"false"},{"key":"delay","value":": number"},{"key":"immediate","value":": boolean"}] + ## API 列表 + \ No newline at end of file diff --git a/packages/demo/src/components/Card/.catalog.ts b/packages/demo/src/components/Card/.catalog.ts new file mode 100644 index 0000000..e14cd9a --- /dev/null +++ b/packages/demo/src/components/Card/.catalog.ts @@ -0,0 +1 @@ +export const list = [{"h2":"默认样式","h3":[]},{"h2":"带头像","h3":[]},{"h2":"栅格","h3":[]},{"h2":"收起与展开长度","h3":[]},{"h2":"自定义背景色和宽度","h3":[]},{"h2":"加载中","h3":[]}] \ No newline at end of file diff --git a/packages/demo/src/components/Card/index.mdx b/packages/demo/src/components/Card/index.mdx index df78168..75d0b3d 100644 --- a/packages/demo/src/components/Card/index.mdx +++ b/packages/demo/src/components/Card/index.mdx @@ -1,9 +1,11 @@ import Actions from './svg/index.tsx'; import More from './svg/tab.tsx'; +import Props from './props.mdx'; # Card -
默认样式
+## 默认样式 + 测试} time="19:20 2020-09-15" extra={} actions={}>
@@ -11,7 +13,7 @@ import More from './svg/tab.tsx';
-
带头像
+## 带头像 多余文本} @@ -30,7 +32,8 @@ import More from './svg/tab.tsx'; -
栅格
+## 栅格 + } @@ -48,7 +51,7 @@ import More from './svg/tab.tsx';
足球
-
收起与展开长度
+## 收起与展开长度 多余文本} @@ -83,7 +86,7 @@ import More from './svg/tab.tsx'; 梁老师可不可以资助我一点钱钱呢啊?不多不多的,球球了! 我好想买Airpods但是没有钱,梁老师可 -
自定义背景色和宽度
+## 自定义背景色和宽度 多余文本} @@ -101,7 +104,10 @@ import More from './svg/tab.tsx'; -
加载中
+## 加载中 + + + diff --git a/packages/demo/src/components/Card/props.mdx b/packages/demo/src/components/Card/props.mdx new file mode 100644 index 0000000..fb995bf --- /dev/null +++ b/packages/demo/src/components/Card/props.mdx @@ -0,0 +1,4 @@ +import Table from '../table.tsx' + export const params = [{"key":"className","value":": string","optional":true,"version":"1.0.0","description":"自定义类名"},{"key":"style","value":": React.CSSProperties","optional":true,"version":"1.0.0","description":"自定义样式"},{"key":"style","value":": React.CSSProperties & CardCssTokens","optional":true,"version":"1.0.0","description":"自定义样式","default":"undefined"},{"key":"size","value":": 'small' | 'normal'","optional":true,"version":"1.0.0","description":"自定义大小","default":"undefined"},{"key":"loading","value":": boolean","optional":true,"version":"1.0.0","description":"卡片内容是否加载","default":"normal"},{"key":"title","value":": React.ReactNode","optional":true,"version":"1.0.0","description":"卡片标题","default":"undefined"},{"key":"actions","value":": React.ReactNode","optional":true,"version":"1.0.0","description":"卡片底部的操作组","default":"undefined"},{"key":"bordered","value":": boolean","optional":true,"version":"1.0.0","description":"是否有边框","default":"true"},{"key":"extra","value":": React.ReactNode","optional":true,"version":"1.0.0","description":"卡片右上角标签","default":"undefined"},{"key":"time","value":": string","optional":true,"version":"1.0.0","description":"时间标签","default":"undefined"},{"key":"children","value":": React.ReactNode","optional":true,"version":"1.0.0","description":"内容","default":"undefined"},{"key":"cover","value":": React.ReactNode","optional":true,"version":"1.0.0","description":"封面","default":"undefined"},{"key":"boradius","value":": boolean","optional":true,"version":"1.0.0","description":"边框角","default":"true"},{"key":"Grid","value":": boolean","optional":true,"version":"1.0.0","description":"栅格","default":"false"},{"key":"avatar","value":": React.ReactNode","optional":true,"version":"1.0.0","description":"头像","default":"true"}] + ## API 列表 +
\ No newline at end of file diff --git a/packages/demo/src/components/Draggable/.catalog.ts b/packages/demo/src/components/Draggable/.catalog.ts new file mode 100644 index 0000000..a176f42 --- /dev/null +++ b/packages/demo/src/components/Draggable/.catalog.ts @@ -0,0 +1 @@ +export const list = [{"h2":"基本示例","h3":[]},{"h2":"拖拽过程中的元素","h3":[]},{"h2":"设置可拖拽区域","h3":[]},{"h2":"拖放案例","h3":[]},{"h2":"拖拽排序","h3":["垂直方向拖拽","水平方向拖拽","网格拖拽","多容器拖拽(垂直)"]}] \ No newline at end of file diff --git a/packages/demo/src/components/Draggable/index.mdx b/packages/demo/src/components/Draggable/index.mdx index 1192e45..25c75b3 100644 --- a/packages/demo/src/components/Draggable/index.mdx +++ b/packages/demo/src/components/Draggable/index.mdx @@ -1,3 +1,5 @@ +import Props from './props.mdx'; + # Draggable 拖拽 一个轻量级,高性能的用于 React 的可扩展拖放组件。 @@ -42,7 +44,7 @@ -## 🌟 拖拽排序 +## 拖拽排序 拖拽排序(Drag-and-drop sorting)是一种广泛实用的交互设计手法。支持用户进行垂直、水平以及网格布局的拖拽排序。 @@ -71,3 +73,5 @@ + + diff --git a/packages/demo/src/components/Draggable/props.mdx b/packages/demo/src/components/Draggable/props.mdx new file mode 100644 index 0000000..cd634ef --- /dev/null +++ b/packages/demo/src/components/Draggable/props.mdx @@ -0,0 +1,4 @@ +import Table from '../table.tsx' + export const params = [{"key":"className","value":": string","optional":true,"version":"1.0.0","description":"自定义类名"},{"key":"style","value":": React.CSSProperties","optional":true,"version":"1.0.0","description":"自定义样式"},{"key":"children","value":": React.ReactNode","optional":true,"version":"1.0.0","description":"列表子项默认插槽","default":"undefined"},{"key":"index","value":": number","optional":true,"version":"1.0.0","description":"列表子项索引值","default":"undefined"},{"key":"top","value":": number","optional":true,"version":"1.0.0","description":"拖动元素相对定位的top偏移值","default":"undefined"},{"key":"left","value":": number","optional":true,"version":"1.0.0","description":"拖动元素相对定位的left偏移值","default":"undefined"}] + ## API 列表 +
\ No newline at end of file diff --git a/packages/demo/src/components/Icon/.catalog.ts b/packages/demo/src/components/Icon/.catalog.ts new file mode 100644 index 0000000..756afe3 --- /dev/null +++ b/packages/demo/src/components/Icon/.catalog.ts @@ -0,0 +1 @@ +export const list = [{"h2":"基本用法","h3":[]},{"h2":"主题样式","h3":[]},{"h2":"定义颜色和透明度","h3":[]},{"h2":"尺寸","h3":[]},{"h2":"自定义样式与旋转","h3":[]},{"h2":"CDN引入","h3":[]}] \ No newline at end of file diff --git a/packages/demo/src/components/Icon/index.mdx b/packages/demo/src/components/Icon/index.mdx index 3fa4d06..a6d447e 100644 --- a/packages/demo/src/components/Icon/index.mdx +++ b/packages/demo/src/components/Icon/index.mdx @@ -1,31 +1,35 @@ +import Props from './props.mdx'; + # Icon -
基本用法
+## 基本用法 - + -
主题样式
+## 主题样式 - + -
定义颜色和透明度
+## 定义颜色和透明度 - + -
尺寸
+## 尺寸 - + -
自定义样式与旋转
+## 自定义样式与旋转 -