react-tech-ui 1.0.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.
- package/LICENSE +82 -0
- package/README.en.md +36 -0
- package/README.md +412 -0
- package/dist/DataCard/index.cjs +1 -0
- package/dist/DataCard/index.js +5 -0
- package/dist/DataCard/style.css +1 -0
- package/dist/DataCard.d.ts +1 -0
- package/dist/DecorationLine/index.cjs +1 -0
- package/dist/DecorationLine/index.js +5 -0
- package/dist/DecorationLine/style.css +1 -0
- package/dist/DecorationLine.d.ts +1 -0
- package/dist/DigitalNumber/index.cjs +1 -0
- package/dist/DigitalNumber/index.js +5 -0
- package/dist/DigitalNumber/style.css +1 -0
- package/dist/DigitalNumber.d.ts +1 -0
- package/dist/Drawer/index.cjs +1 -0
- package/dist/Drawer/index.js +5 -0
- package/dist/Drawer/style.css +1 -0
- package/dist/Drawer.d.ts +1 -0
- package/dist/FloatingButton/index.cjs +1 -0
- package/dist/FloatingButton/index.js +5 -0
- package/dist/FloatingButton/style.css +1 -0
- package/dist/FloatingButton.d.ts +1 -0
- package/dist/FlowLight/index.cjs +1 -0
- package/dist/FlowLight/index.js +5 -0
- package/dist/FlowLight/style.css +1 -0
- package/dist/FlowLight.d.ts +1 -0
- package/dist/Icon/index.cjs +1 -0
- package/dist/Icon/index.js +6 -0
- package/dist/Icon/style.css +1 -0
- package/dist/Icon.d.ts +1 -0
- package/dist/Masonry/index.cjs +1 -0
- package/dist/Masonry/index.js +5 -0
- package/dist/Masonry/style.css +1 -0
- package/dist/Masonry.d.ts +1 -0
- package/dist/Modal/index.cjs +1 -0
- package/dist/Modal/index.js +5 -0
- package/dist/Modal/style.css +1 -0
- package/dist/Modal.d.ts +1 -0
- package/dist/Popconfirm/index.cjs +1 -0
- package/dist/Popconfirm/index.js +5 -0
- package/dist/Popconfirm/style.css +1 -0
- package/dist/Popconfirm.d.ts +1 -0
- package/dist/QRCode/index.cjs +1 -0
- package/dist/QRCode/index.js +5 -0
- package/dist/QRCode/style.css +1 -0
- package/dist/QRCode.d.ts +1 -0
- package/dist/ScreenAdapter/index.cjs +1 -0
- package/dist/ScreenAdapter/index.js +5 -0
- package/dist/ScreenAdapter/style.css +1 -0
- package/dist/ScreenAdapter.d.ts +1 -0
- package/dist/ScrollTable/index.cjs +1 -0
- package/dist/ScrollTable/index.js +5 -0
- package/dist/ScrollTable/style.css +1 -0
- package/dist/ScrollTable.d.ts +1 -0
- package/dist/Skeleton/index.cjs +1 -0
- package/dist/Skeleton/index.js +5 -0
- package/dist/Skeleton/style.css +1 -0
- package/dist/Skeleton.d.ts +1 -0
- package/dist/StatusIndicator/index.cjs +1 -0
- package/dist/StatusIndicator/index.js +5 -0
- package/dist/StatusIndicator/style.css +1 -0
- package/dist/StatusIndicator.d.ts +1 -0
- package/dist/TechBorder/index.cjs +1 -0
- package/dist/TechBorder/index.js +5 -0
- package/dist/TechBorder/style.css +1 -0
- package/dist/TechBorder.d.ts +1 -0
- package/dist/TechButton/index.cjs +1 -0
- package/dist/TechButton/index.js +5 -0
- package/dist/TechButton/style.css +1 -0
- package/dist/TechButton.d.ts +1 -0
- package/dist/TechTitle/index.cjs +1 -0
- package/dist/TechTitle/index.js +5 -0
- package/dist/TechTitle/style.css +1 -0
- package/dist/TechTitle.d.ts +1 -0
- package/dist/ThemeProvider/index.cjs +1 -0
- package/dist/ThemeProvider/index.js +8 -0
- package/dist/ThemeProvider/style.css +1 -0
- package/dist/ThemeProvider.d.ts +1 -0
- package/dist/Toast/index.cjs +1 -0
- package/dist/Toast/index.js +5 -0
- package/dist/Toast/style.css +1 -0
- package/dist/Toast.d.ts +1 -0
- package/dist/assets/jsx-runtime-B3A9vq2e.css +1 -0
- package/dist/chunks/DataCard-CY4njdg1.js +61 -0
- package/dist/chunks/DataCard-DjcUGxo9.cjs +1 -0
- package/dist/chunks/DecorationLine-Be4QQyry.cjs +1 -0
- package/dist/chunks/DecorationLine-CaZYIYl6.js +45 -0
- package/dist/chunks/DigitalNumber-BNklEz-G.js +60 -0
- package/dist/chunks/DigitalNumber-BWP5OjvN.cjs +1 -0
- package/dist/chunks/Drawer-CuoztnnD.cjs +1 -0
- package/dist/chunks/Drawer-u77zScbz.js +69 -0
- package/dist/chunks/FloatingButton-DcNfUVcB.js +109 -0
- package/dist/chunks/FloatingButton-nOl8ZHul.cjs +1 -0
- package/dist/chunks/FlowLight-Brrwyxcv.js +62 -0
- package/dist/chunks/FlowLight-DLBCaU07.cjs +1 -0
- package/dist/chunks/Icon-HxIzkEdE.js +147 -0
- package/dist/chunks/Icon-ISAK5vLx.cjs +1 -0
- package/dist/chunks/Masonry-CxVB3-w9.js +84 -0
- package/dist/chunks/Masonry-LPU0R1mE.cjs +1 -0
- package/dist/chunks/Modal-BfCALRKS.js +63 -0
- package/dist/chunks/Modal-DxqX4m57.cjs +1 -0
- package/dist/chunks/Popconfirm-C3npOXd6.js +112 -0
- package/dist/chunks/Popconfirm-CgPdSp84.cjs +1 -0
- package/dist/chunks/QRCode-B2Sdq1f6.cjs +8 -0
- package/dist/chunks/QRCode-BRcujxUT.js +1535 -0
- package/dist/chunks/ScreenAdapter-CugXUEoe.js +61 -0
- package/dist/chunks/ScreenAdapter-DpfmLRd5.cjs +1 -0
- package/dist/chunks/ScrollTable-B21j9zGn.cjs +1 -0
- package/dist/chunks/ScrollTable-NgSlPEKj.js +98 -0
- package/dist/chunks/Skeleton-CKvua4DB.cjs +1 -0
- package/dist/chunks/Skeleton-CQvCi-N8.js +76 -0
- package/dist/chunks/StatusIndicator-CliH19aT.js +40 -0
- package/dist/chunks/StatusIndicator-DhPwugAy.cjs +1 -0
- package/dist/chunks/TechBorder-Cu-JqkTf.js +45 -0
- package/dist/chunks/TechBorder-KTRXvzVv.cjs +1 -0
- package/dist/chunks/TechButton-CTrXjlsD.js +42 -0
- package/dist/chunks/TechButton-DYdIWO-l.cjs +1 -0
- package/dist/chunks/TechTitle-B3pkYIbI.cjs +1 -0
- package/dist/chunks/TechTitle-DfLwdrV5.js +41 -0
- package/dist/chunks/ThemeProvider-CGtZuVnU.cjs +1 -0
- package/dist/chunks/ThemeProvider-uEdKkbFn.js +206 -0
- package/dist/chunks/Toast-CedBaeZV.cjs +1 -0
- package/dist/chunks/Toast-DdlPSfu0.js +79 -0
- package/dist/chunks/index-CcykAxZN.js +6 -0
- package/dist/chunks/index-pCtiW2Id.cjs +1 -0
- package/dist/chunks/jsx-runtime-7asRZgsb.cjs +30 -0
- package/dist/chunks/jsx-runtime-C6iVud2f.js +630 -0
- package/dist/components/DataCard/DataCard.d.ts +18 -0
- package/dist/components/DataCard/entry.d.ts +3 -0
- package/dist/components/DataCard/index.d.ts +2 -0
- package/dist/components/DecorationLine/DecorationLine.d.ts +14 -0
- package/dist/components/DecorationLine/entry.d.ts +3 -0
- package/dist/components/DecorationLine/index.d.ts +2 -0
- package/dist/components/DigitalNumber/DigitalNumber.d.ts +17 -0
- package/dist/components/DigitalNumber/entry.d.ts +3 -0
- package/dist/components/DigitalNumber/index.d.ts +2 -0
- package/dist/components/Drawer/Drawer.d.ts +18 -0
- package/dist/components/Drawer/entry.d.ts +3 -0
- package/dist/components/Drawer/index.d.ts +2 -0
- package/dist/components/FloatingButton/FloatingButton.d.ts +24 -0
- package/dist/components/FloatingButton/entry.d.ts +3 -0
- package/dist/components/FloatingButton/index.d.ts +2 -0
- package/dist/components/FlowLight/FlowLight.d.ts +14 -0
- package/dist/components/FlowLight/entry.d.ts +3 -0
- package/dist/components/FlowLight/index.d.ts +2 -0
- package/dist/components/Icon/Icon.d.ts +16 -0
- package/dist/components/Icon/entry.d.ts +4 -0
- package/dist/components/Icon/index.d.ts +3 -0
- package/dist/components/Masonry/Masonry.d.ts +23 -0
- package/dist/components/Masonry/entry.d.ts +3 -0
- package/dist/components/Masonry/index.d.ts +2 -0
- package/dist/components/Modal/Modal.d.ts +18 -0
- package/dist/components/Modal/entry.d.ts +3 -0
- package/dist/components/Modal/index.d.ts +2 -0
- package/dist/components/Popconfirm/Popconfirm.d.ts +19 -0
- package/dist/components/Popconfirm/entry.d.ts +3 -0
- package/dist/components/Popconfirm/index.d.ts +2 -0
- package/dist/components/QRCode/QRCode.d.ts +19 -0
- package/dist/components/QRCode/entry.d.ts +3 -0
- package/dist/components/QRCode/index.d.ts +2 -0
- package/dist/components/ScreenAdapter/ScreenAdapter.d.ts +13 -0
- package/dist/components/ScreenAdapter/entry.d.ts +3 -0
- package/dist/components/ScreenAdapter/index.d.ts +2 -0
- package/dist/components/ScrollTable/ScrollTable.d.ts +23 -0
- package/dist/components/ScrollTable/entry.d.ts +3 -0
- package/dist/components/ScrollTable/index.d.ts +2 -0
- package/dist/components/Skeleton/Skeleton.d.ts +16 -0
- package/dist/components/Skeleton/entry.d.ts +3 -0
- package/dist/components/Skeleton/index.d.ts +2 -0
- package/dist/components/StatusIndicator/StatusIndicator.d.ts +14 -0
- package/dist/components/StatusIndicator/entry.d.ts +3 -0
- package/dist/components/StatusIndicator/index.d.ts +2 -0
- package/dist/components/TechBorder/TechBorder.d.ts +15 -0
- package/dist/components/TechBorder/entry.d.ts +3 -0
- package/dist/components/TechBorder/index.d.ts +2 -0
- package/dist/components/TechButton/TechButton.d.ts +15 -0
- package/dist/components/TechButton/entry.d.ts +3 -0
- package/dist/components/TechButton/index.d.ts +2 -0
- package/dist/components/TechTitle/TechTitle.d.ts +14 -0
- package/dist/components/TechTitle/entry.d.ts +3 -0
- package/dist/components/TechTitle/index.d.ts +2 -0
- package/dist/components/ThemeProvider/ThemeProvider.d.ts +42 -0
- package/dist/components/ThemeProvider/entry.d.ts +3 -0
- package/dist/components/ThemeProvider/index.d.ts +2 -0
- package/dist/components/Toast/Toast.d.ts +23 -0
- package/dist/components/Toast/entry.d.ts +3 -0
- package/dist/components/Toast/index.d.ts +2 -0
- package/dist/index/index.cjs +1 -0
- package/dist/index/index.js +49 -0
- package/dist/index/style.css +41 -0
- package/dist/index.d.ts +31 -0
- package/dist/jsx-runtime/style.css +1 -0
- package/dist/theme/index.cjs +1 -0
- package/dist/theme/index.d.ts +46 -0
- package/dist/theme/index.js +48 -0
- package/dist/theme.d.ts +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/package.json +165 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
VIM LICENSE
|
|
2
|
+
|
|
3
|
+
I) There are no restrictions on distributing unmodified copies of react ui 组件库
|
|
4
|
+
except that they must include this license text. You can also distribute
|
|
5
|
+
unmodified parts of [project], likewise unrestricted except that they must
|
|
6
|
+
include this license text. You are also allowed to include executables
|
|
7
|
+
that you made from the unmodified [project] sources, plus your own usage
|
|
8
|
+
examples and Vim scripts.
|
|
9
|
+
|
|
10
|
+
II) It is allowed to distribute a modified (or extended) version of [project],
|
|
11
|
+
including executables and/or source code, when the following four
|
|
12
|
+
conditions are met:
|
|
13
|
+
1) This license text must be included unmodified.
|
|
14
|
+
2) The modified [project] must be distributed in one of the following five
|
|
15
|
+
ways:
|
|
16
|
+
a) If you make changes to [project] yourself, you must clearly describe
|
|
17
|
+
in the distribution how to contact you. When the maintainer asks
|
|
18
|
+
you (in any way) for a copy of the modified [project] you
|
|
19
|
+
distributed, you must make your changes, including source code,
|
|
20
|
+
available to the maintainer without fee. The maintainer reserves
|
|
21
|
+
the right to include your changes in the official version of
|
|
22
|
+
[project]. What the maintainer will do with your changes and under
|
|
23
|
+
what license they will be distributed is negotiable. If there has
|
|
24
|
+
been no negotiation then this license, or a later version, also
|
|
25
|
+
applies to your changes. The current maintainer is Bram Moolenaar
|
|
26
|
+
<Bram@vim.org>. If this changes it will be announced in appropriate
|
|
27
|
+
places (most likely vim.sf.net, www.vim.org and/or comp.editors).
|
|
28
|
+
When it is completely impossible to contact the maintainer, the
|
|
29
|
+
obligation to send him your changes ceases. Once the maintainer has
|
|
30
|
+
confirmed that he has received your changes they will not have to be
|
|
31
|
+
sent again.
|
|
32
|
+
b) If you have received a modified [project] that was distributed as
|
|
33
|
+
mentioned under a) you are allowed to further distribute it
|
|
34
|
+
unmodified, as mentioned at I). If you make additional changes the
|
|
35
|
+
text under a) applies to those changes.
|
|
36
|
+
c) Provide all the changes, including source code, with every copy of
|
|
37
|
+
the modified [project] you distribute. This may be done in the form
|
|
38
|
+
of a context diff. You can choose what license to use for new code
|
|
39
|
+
you add. The changes and their license must not restrict others
|
|
40
|
+
from making their own changes to the official version of [project].
|
|
41
|
+
d) When you have a modified [project] which includes changes as
|
|
42
|
+
mentioned under c), you can distribute it without the source code
|
|
43
|
+
for the changes if the following three conditions are met:
|
|
44
|
+
- The license that applies to the changes permits you to distribute
|
|
45
|
+
the changes to the Vim maintainer without fee or restriction, and
|
|
46
|
+
permits the Vim maintainer to include the changes in the official
|
|
47
|
+
version of [project] without fee or restriction.
|
|
48
|
+
- You keep the changes for at least three years after last
|
|
49
|
+
distributing the corresponding modified [project]. When the
|
|
50
|
+
maintainer or someone who you distributed the modified [project]
|
|
51
|
+
to asks you (in any way) for the changes within this period, you
|
|
52
|
+
must make them available to him.
|
|
53
|
+
- You clearly describe in the distribution how to contact you. This
|
|
54
|
+
contact information must remain valid for at least three years
|
|
55
|
+
after last distributing the corresponding modified [project], or
|
|
56
|
+
as long as possible.
|
|
57
|
+
e) When the GNU General Public License (GPL) applies to the changes,
|
|
58
|
+
you can distribute the modified [project] under the GNU GPL version
|
|
59
|
+
2 or any later version.
|
|
60
|
+
3) A message must be added, at least in the output of the ":version"
|
|
61
|
+
command and in the intro screen, such that the user of the modified
|
|
62
|
+
[project] is able to see that it was modified. When distributing as
|
|
63
|
+
mentioned under 2)e) adding the message is only required for as far as
|
|
64
|
+
this does not conflict with the license used for the changes.
|
|
65
|
+
4) The contact information as required under 2)a) and 2)d) must not be
|
|
66
|
+
removed or changed, except that the person himself can make
|
|
67
|
+
corrections.
|
|
68
|
+
|
|
69
|
+
III) If you distribute a modified version of [project], you are encouraged to
|
|
70
|
+
use the Vim license for your changes and make them available to the
|
|
71
|
+
maintainer, including the source code. The preferred way to do this is
|
|
72
|
+
by e-mail or by uploading the files to a server and e-mailing the URL. If
|
|
73
|
+
the number of changes is small (e.g., a modified Makefile) e-mailing a
|
|
74
|
+
context diff will do. The e-mail address to be used is
|
|
75
|
+
<maintainer@vim.org>
|
|
76
|
+
|
|
77
|
+
IV) It is not allowed to remove this license from the distribution of the
|
|
78
|
+
[project] sources, parts of it or from a modified version. You may use
|
|
79
|
+
this license for previous [project] releases instead of the license that
|
|
80
|
+
they came with, at your option.
|
|
81
|
+
|
|
82
|
+
|
package/README.en.md
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# react ui 组件库
|
|
2
|
+
|
|
3
|
+
#### Description
|
|
4
|
+
一个专注于React的UI组件库,提供丰富、高质量的组件,助力开发者快速构建现代化Web应用。
|
|
5
|
+
|
|
6
|
+
#### Software Architecture
|
|
7
|
+
Software architecture description
|
|
8
|
+
|
|
9
|
+
#### Installation
|
|
10
|
+
|
|
11
|
+
1. xxxx
|
|
12
|
+
2. xxxx
|
|
13
|
+
3. xxxx
|
|
14
|
+
|
|
15
|
+
#### Instructions
|
|
16
|
+
|
|
17
|
+
1. xxxx
|
|
18
|
+
2. xxxx
|
|
19
|
+
3. xxxx
|
|
20
|
+
|
|
21
|
+
#### Contribution
|
|
22
|
+
|
|
23
|
+
1. Fork the repository
|
|
24
|
+
2. Create Feat_xxx branch
|
|
25
|
+
3. Commit your code
|
|
26
|
+
4. Create Pull Request
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
#### Gitee Feature
|
|
30
|
+
|
|
31
|
+
1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
|
|
32
|
+
2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
|
|
33
|
+
3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
|
|
34
|
+
4. The most valuable open source project [GVP](https://gitee.com/gvp)
|
|
35
|
+
5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
|
|
36
|
+
6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
|
package/README.md
ADDED
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
# React Tech UI
|
|
2
|
+
|
|
3
|
+
一个专注于 React 的科技风格 UI 组件库,提供丰富、高质量的组件,助力开发者快速构建现代化大屏 Web 应用。
|
|
4
|
+
|
|
5
|
+
## 特性
|
|
6
|
+
|
|
7
|
+
- 🎨 **科技风格设计** — 深色主题 + 霓虹光效 + 扫描线动画,打造沉浸式科技感
|
|
8
|
+
- 📺 **大屏适配** — 内置 ScreenAdapter 组件,支持等比缩放、宽度缩放、全屏三种适配模式
|
|
9
|
+
- ✨ **丰富动画** — 脉冲发光、扫描线、渐变流动、数字翻牌等多种科技风动画
|
|
10
|
+
- 📦 **开箱即用** — 9 大核心组件,覆盖大屏开发常见场景
|
|
11
|
+
- 🔧 **TypeScript** — 完整类型定义,开发体验友好
|
|
12
|
+
- 🎯 **按需使用** — CSS 变量驱动主题,轻松自定义颜色和风格
|
|
13
|
+
|
|
14
|
+
## 快速开始
|
|
15
|
+
|
|
16
|
+
### 安装
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install react-tech-ui
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### 引入样式
|
|
23
|
+
|
|
24
|
+
在项目入口文件中引入组件库样式:
|
|
25
|
+
|
|
26
|
+
```tsx
|
|
27
|
+
import 'react-tech-ui/dist/style.css';
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### 基本使用
|
|
31
|
+
|
|
32
|
+
```tsx
|
|
33
|
+
import { ScreenAdapter, DataCard, DigitalNumber, TechBorder } from 'react-tech-ui';
|
|
34
|
+
|
|
35
|
+
function App() {
|
|
36
|
+
return (
|
|
37
|
+
<ScreenAdapter width={1920} height={1080} bgStyle="grid">
|
|
38
|
+
<TechBorder variant="corner">
|
|
39
|
+
<DataCard title="在线用户" trend="up" trendValue="+12%">
|
|
40
|
+
<DigitalNumber value={12847} fontSize={28} />
|
|
41
|
+
</DataCard>
|
|
42
|
+
</TechBorder>
|
|
43
|
+
</ScreenAdapter>
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## 本地开发
|
|
49
|
+
|
|
50
|
+
### 环境要求
|
|
51
|
+
|
|
52
|
+
- Node.js >= 16
|
|
53
|
+
- npm >= 8
|
|
54
|
+
|
|
55
|
+
### 启动开发服务器
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# 安装依赖
|
|
59
|
+
npm install
|
|
60
|
+
|
|
61
|
+
# 启动 Demo 演示页面
|
|
62
|
+
npm run dev
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
启动后访问 http://localhost:3000 查看组件库大屏演示效果。
|
|
66
|
+
|
|
67
|
+
### 构建组件库
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
# 构建组件库(输出到 dist/ 目录)
|
|
71
|
+
npm run build:lib
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
构建产物:
|
|
75
|
+
- `dist/index.es.js` — ES Module 格式
|
|
76
|
+
- `dist/index.cjs.js` — CommonJS 格式
|
|
77
|
+
- `dist/index.d.ts` — TypeScript 类型声明
|
|
78
|
+
- `dist/style.css` — 样式文件
|
|
79
|
+
|
|
80
|
+
### 其他命令
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
# TypeScript 类型检查
|
|
84
|
+
npm run typecheck
|
|
85
|
+
|
|
86
|
+
# 预览构建产物
|
|
87
|
+
npm run preview
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## 组件文档
|
|
91
|
+
|
|
92
|
+
### ScreenAdapter — 大屏适配器
|
|
93
|
+
|
|
94
|
+
将内容按设计稿尺寸等比缩放,适配不同分辨率的大屏。
|
|
95
|
+
|
|
96
|
+
```tsx
|
|
97
|
+
<ScreenAdapter
|
|
98
|
+
width={1920} // 设计稿宽度,默认 1920
|
|
99
|
+
height={1080} // 设计稿高度,默认 1080
|
|
100
|
+
mode="scale" // 适配模式:scale | width-scale | full
|
|
101
|
+
bgStyle="grid" // 背景样式:dark | grid | particles
|
|
102
|
+
>
|
|
103
|
+
{children}
|
|
104
|
+
</ScreenAdapter>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
| 属性 | 说明 | 类型 | 默认值 |
|
|
108
|
+
|------|------|------|--------|
|
|
109
|
+
| width | 设计稿宽度 | `number` | `1920` |
|
|
110
|
+
| height | 设计稿高度 | `number` | `1080` |
|
|
111
|
+
| mode | 适配模式 | `'scale' \| 'width-scale' \| 'full'` | `'scale'` |
|
|
112
|
+
| bgStyle | 背景样式 | `'dark' \| 'grid' \| 'particles'` | `'dark'` |
|
|
113
|
+
| className | 自定义类名 | `string` | - |
|
|
114
|
+
| style | 自定义样式 | `CSSProperties` | - |
|
|
115
|
+
|
|
116
|
+
**适配模式说明:**
|
|
117
|
+
- `scale`:等比缩放,保持设计稿比例,居中显示
|
|
118
|
+
- `width-scale`:按宽度缩放,高度可能溢出或留白
|
|
119
|
+
- `full`:不缩放,100% 填充屏幕
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
### TechBorder — 科技边框
|
|
124
|
+
|
|
125
|
+
提供 5 种科技风格边框变体,支持发光动画。
|
|
126
|
+
|
|
127
|
+
```tsx
|
|
128
|
+
<TechBorder variant="corner" animate cornerSize={20}>
|
|
129
|
+
<div style={{ padding: '16px' }}>内容区域</div>
|
|
130
|
+
</TechBorder>
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
| 属性 | 说明 | 类型 | 默认值 |
|
|
134
|
+
|------|------|------|--------|
|
|
135
|
+
| variant | 边框变体 | `'corner' \| 'full' \| 'gradient' \| 'scan' \| 'neon'` | `'corner'` |
|
|
136
|
+
| color | 边框颜色 | `string` | `--tech-primary` |
|
|
137
|
+
| glowColor | 发光颜色 | `string` | `--tech-glow-primary` |
|
|
138
|
+
| borderWidth | 边框宽度 | `number` | `1` |
|
|
139
|
+
| cornerSize | 角标尺寸(corner 模式) | `number` | `16` |
|
|
140
|
+
| animate | 是否启用动画 | `boolean` | `true` |
|
|
141
|
+
|
|
142
|
+
**变体说明:**
|
|
143
|
+
- `corner`:四角装饰边框,大屏最常用
|
|
144
|
+
- `full`:全边框 + 内发光脉冲
|
|
145
|
+
- `gradient`:渐变流动边框
|
|
146
|
+
- `scan`:扫描线边框,顶部光线循环扫描
|
|
147
|
+
- `neon`:霓虹发光边框
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
### DataCard — 数据卡片
|
|
152
|
+
|
|
153
|
+
展示核心指标数据,支持趋势标识和多种视觉风格。
|
|
154
|
+
|
|
155
|
+
```tsx
|
|
156
|
+
<DataCard
|
|
157
|
+
title="吞吐量"
|
|
158
|
+
icon="📊"
|
|
159
|
+
variant="gradient"
|
|
160
|
+
trend="up"
|
|
161
|
+
trendValue="+3.2%"
|
|
162
|
+
color="#0affb0"
|
|
163
|
+
>
|
|
164
|
+
<DigitalNumber value={3.56} decimals={2} suffix="GB/s" />
|
|
165
|
+
</DataCard>
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
| 属性 | 说明 | 类型 | 默认值 |
|
|
169
|
+
|------|------|------|--------|
|
|
170
|
+
| title | 卡片标题 | `string` | - |
|
|
171
|
+
| value | 数据值(也可通过 children 自定义) | `string \| number` | - |
|
|
172
|
+
| unit | 单位 | `string` | - |
|
|
173
|
+
| icon | 图标 | `ReactNode` | - |
|
|
174
|
+
| trend | 趋势方向 | `'up' \| 'down' \| 'flat'` | - |
|
|
175
|
+
| trendValue | 趋势值 | `string` | - |
|
|
176
|
+
| variant | 卡片样式 | `'default' \| 'gradient' \| 'glass' \| 'outline'` | `'default'` |
|
|
177
|
+
| color | 主题色 | `string` | - |
|
|
178
|
+
| animate | 入场动画 | `boolean` | `true` |
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
### DigitalNumber — 数字翻牌器
|
|
183
|
+
|
|
184
|
+
数字动态滚动效果,大屏数据展示必备。
|
|
185
|
+
|
|
186
|
+
```tsx
|
|
187
|
+
<DigitalNumber
|
|
188
|
+
value={98456}
|
|
189
|
+
fontSize={56}
|
|
190
|
+
separator
|
|
191
|
+
prefix="$"
|
|
192
|
+
suffix="ms"
|
|
193
|
+
duration={1500}
|
|
194
|
+
decimals={2}
|
|
195
|
+
/>
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
| 属性 | 说明 | 类型 | 默认值 |
|
|
199
|
+
|------|------|------|--------|
|
|
200
|
+
| value | 目标数值 | `number` | - |
|
|
201
|
+
| duration | 动画时长(ms) | `number` | `1500` |
|
|
202
|
+
| decimals | 小数位数 | `number` | `0` |
|
|
203
|
+
| separator | 是否千分位分隔 | `boolean` | `true` |
|
|
204
|
+
| prefix | 前缀 | `string` | - |
|
|
205
|
+
| suffix | 后缀 | `string` | - |
|
|
206
|
+
| color | 数字颜色 | `string` | `--tech-primary` |
|
|
207
|
+
| fontSize | 字体大小(px) | `number` | `36` |
|
|
208
|
+
| animate | 是否启用动画 | `boolean` | `true` |
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
### TechTitle — 科技标题
|
|
213
|
+
|
|
214
|
+
5 种科技风格标题变体,支持三级标题。
|
|
215
|
+
|
|
216
|
+
```tsx
|
|
217
|
+
<TechTitle variant="bracket" level={1}>智慧数据中心监控平台</TechTitle>
|
|
218
|
+
<TechTitle variant="underline" level={3}>核心指标</TechTitle>
|
|
219
|
+
<TechTitle variant="glow" level={2} align="center">数据总览</TechTitle>
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
| 属性 | 说明 | 类型 | 默认值 |
|
|
223
|
+
|------|------|------|--------|
|
|
224
|
+
| variant | 标题变体 | `'default' \| 'gradient' \| 'glow' \| 'underline' \| 'bracket'` | `'default'` |
|
|
225
|
+
| level | 标题级别 | `1 \| 2 \| 3` | `1` |
|
|
226
|
+
| color | 标题颜色 | `string` | `--tech-primary` |
|
|
227
|
+
| align | 对齐方式 | `'left' \| 'center' \| 'right'` | `'left'` |
|
|
228
|
+
| animate | 是否启用动画 | `boolean` | `true` |
|
|
229
|
+
|
|
230
|
+
**变体说明:**
|
|
231
|
+
- `default`:纯色标题
|
|
232
|
+
- `gradient`:渐变文字
|
|
233
|
+
- `glow`:发光脉冲效果
|
|
234
|
+
- `underline`:带装饰下划线
|
|
235
|
+
- `bracket`:中括号包裹【标题】
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
### ScrollTable — 滚动表格
|
|
240
|
+
|
|
241
|
+
自动滚动数据表格,鼠标悬停暂停,适合大屏数据列表展示。
|
|
242
|
+
|
|
243
|
+
```tsx
|
|
244
|
+
const columns = [
|
|
245
|
+
{ key: 'id', title: '编号', width: '15%' },
|
|
246
|
+
{ key: 'name', title: '名称', width: '25%' },
|
|
247
|
+
{
|
|
248
|
+
key: 'status',
|
|
249
|
+
title: '状态',
|
|
250
|
+
width: '20%',
|
|
251
|
+
render: (val) => <span style={{ color: val === '正常' ? '#0affb0' : '#ff4757' }}>{val}</span>,
|
|
252
|
+
},
|
|
253
|
+
];
|
|
254
|
+
|
|
255
|
+
<ScrollTable
|
|
256
|
+
columns={columns}
|
|
257
|
+
data={tableData}
|
|
258
|
+
rowHeight={40}
|
|
259
|
+
visibleRows={6}
|
|
260
|
+
scrollSpeed={50}
|
|
261
|
+
/>
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
| 属性 | 说明 | 类型 | 默认值 |
|
|
265
|
+
|------|------|------|--------|
|
|
266
|
+
| columns | 列配置 | `ScrollTableColumn[]` | - |
|
|
267
|
+
| data | 数据源 | `Record<string, any>[]` | - |
|
|
268
|
+
| rowHeight | 行高(px) | `number` | `40` |
|
|
269
|
+
| visibleRows | 可见行数 | `number` | `6` |
|
|
270
|
+
| scrollSpeed | 滚动速度 | `number` | `50` |
|
|
271
|
+
| headerColor | 表头颜色 | `string` | `--tech-primary` |
|
|
272
|
+
| rowHover | 行悬停效果 | `boolean` | `true` |
|
|
273
|
+
| animate | 是否自动滚动 | `boolean` | `true` |
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
### StatusIndicator — 状态指示器
|
|
278
|
+
|
|
279
|
+
带脉冲动画的状态指示灯。
|
|
280
|
+
|
|
281
|
+
```tsx
|
|
282
|
+
<StatusIndicator status="online" label="系统正常" />
|
|
283
|
+
<StatusIndicator status="warning" label="2项告警" size="small" />
|
|
284
|
+
<StatusIndicator status="error" label="服务异常" />
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
| 属性 | 说明 | 类型 | 默认值 |
|
|
288
|
+
|------|------|------|--------|
|
|
289
|
+
| status | 状态类型 | `'online' \| 'offline' \| 'warning' \| 'error' \| 'custom'` | `'online'` |
|
|
290
|
+
| color | 自定义颜色(custom 模式) | `string` | - |
|
|
291
|
+
| label | 状态文本 | `string` | - |
|
|
292
|
+
| size | 尺寸 | `'small' \| 'medium' \| 'large'` | `'medium'` |
|
|
293
|
+
| animate | 脉冲动画 | `boolean` | `true` |
|
|
294
|
+
| showDot | 是否显示指示灯 | `boolean` | `true` |
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
### DecorationLine — 装饰线条
|
|
299
|
+
|
|
300
|
+
5 种装饰线条样式,用于区域分隔和视觉装饰。
|
|
301
|
+
|
|
302
|
+
```tsx
|
|
303
|
+
<DecorationLine variant="gradient" />
|
|
304
|
+
<DecorationLine variant="dashed" length={80} />
|
|
305
|
+
<DecorationLine variant="dot-wave" length={100} />
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
| 属性 | 说明 | 类型 | 默认值 |
|
|
309
|
+
|------|------|------|--------|
|
|
310
|
+
| variant | 线条变体 | `'solid' \| 'dashed' \| 'gradient' \| 'double' \| 'dot-wave'` | `'gradient'` |
|
|
311
|
+
| direction | 方向 | `'horizontal' \| 'vertical'` | `'horizontal'` |
|
|
312
|
+
| color | 线条颜色 | `string` | `--tech-primary` |
|
|
313
|
+
| length | 线条长度 | `string \| number` | `'100%'` |
|
|
314
|
+
| thickness | 线条粗细(px) | `number` | `1` |
|
|
315
|
+
| animate | 是否启用动画 | `boolean` | `true` |
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
### TechButton — 科技按钮
|
|
320
|
+
|
|
321
|
+
5 种科技风格按钮,支持发光、加载、扫光等效果。
|
|
322
|
+
|
|
323
|
+
```tsx
|
|
324
|
+
<TechButton variant="primary" glow>启动服务</TechButton>
|
|
325
|
+
<TechButton variant="neon">高级设置</TechButton>
|
|
326
|
+
<TechButton variant="outline" loading>部署中...</TechButton>
|
|
327
|
+
<TechButton variant="ghost" size="small">刷新数据</TechButton>
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
| 属性 | 说明 | 类型 | 默认值 |
|
|
331
|
+
|------|------|------|--------|
|
|
332
|
+
| variant | 按钮变体 | `'primary' \| 'secondary' \| 'outline' \| 'ghost' \| 'neon'` | `'primary'` |
|
|
333
|
+
| size | 按钮尺寸 | `'small' \| 'medium' \| 'large'` | `'medium'` |
|
|
334
|
+
| color | 主题色 | `string` | - |
|
|
335
|
+
| glow | 发光脉冲效果 | `boolean` | `false` |
|
|
336
|
+
| loading | 加载状态 | `boolean` | `false` |
|
|
337
|
+
| icon | 图标 | `ReactNode` | - |
|
|
338
|
+
|
|
339
|
+
继承所有原生 `<button>` HTML 属性。
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
## 主题定制
|
|
344
|
+
|
|
345
|
+
组件库使用 CSS 变量驱动主题,可通过覆盖变量自定义风格:
|
|
346
|
+
|
|
347
|
+
```css
|
|
348
|
+
:root {
|
|
349
|
+
--tech-primary: #00d4ff;
|
|
350
|
+
--tech-secondary: #0affb0;
|
|
351
|
+
--tech-accent: #ff6b35;
|
|
352
|
+
--tech-bg-dark: #0a0e27;
|
|
353
|
+
--tech-bg-card: rgba(13, 17, 53, 0.85);
|
|
354
|
+
--tech-border: rgba(0, 212, 255, 0.3);
|
|
355
|
+
--tech-text-primary: #e8eaf6;
|
|
356
|
+
--tech-font-digital: 'Orbitron', monospace;
|
|
357
|
+
--tech-font-title: 'Rajdhani', sans-serif;
|
|
358
|
+
}
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
也可在 JavaScript 中获取主题对象:
|
|
362
|
+
|
|
363
|
+
```tsx
|
|
364
|
+
import { techTheme } from 'react-tech-ui';
|
|
365
|
+
|
|
366
|
+
console.log(techTheme.colors.primary); // '#00d4ff'
|
|
367
|
+
console.log(techTheme.colors.bgDark); // '#0a0e27'
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
## 项目结构
|
|
371
|
+
|
|
372
|
+
```
|
|
373
|
+
src/
|
|
374
|
+
├── theme/
|
|
375
|
+
│ ├── index.ts # 主题变量定义
|
|
376
|
+
│ └── global.css # 全局样式 & CSS变量 & 关键帧动画
|
|
377
|
+
├── utils/
|
|
378
|
+
│ └── index.ts # 工具函数
|
|
379
|
+
├── components/
|
|
380
|
+
│ ├── ScreenAdapter/ # 大屏适配器
|
|
381
|
+
│ ├── TechBorder/ # 科技边框
|
|
382
|
+
│ ├── DataCard/ # 数据卡片
|
|
383
|
+
│ ├── DigitalNumber/ # 数字翻牌器
|
|
384
|
+
│ ├── TechTitle/ # 科技标题
|
|
385
|
+
│ ├── ScrollTable/ # 滚动表格
|
|
386
|
+
│ ├── StatusIndicator/ # 状态指示器
|
|
387
|
+
│ ├── DecorationLine/ # 装饰线条
|
|
388
|
+
│ └── TechButton/ # 科技按钮
|
|
389
|
+
└── index.ts # 统一导出入口
|
|
390
|
+
|
|
391
|
+
demo/
|
|
392
|
+
├── main.tsx # Demo 入口
|
|
393
|
+
└── App.tsx # 大屏演示页面
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
## 技术栈
|
|
397
|
+
|
|
398
|
+
- React 18+
|
|
399
|
+
- TypeScript 5
|
|
400
|
+
- Vite 5
|
|
401
|
+
- CSS Variables(主题系统)
|
|
402
|
+
|
|
403
|
+
## 参与贡献
|
|
404
|
+
|
|
405
|
+
1. Fork 本仓库
|
|
406
|
+
2. 新建 Feat_xxx 分支
|
|
407
|
+
3. 提交代码
|
|
408
|
+
4. 新建 Pull Request
|
|
409
|
+
|
|
410
|
+
## License
|
|
411
|
+
|
|
412
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../chunks/jsx-runtime-7asRZgsb.cjs");const a=require("../chunks/DataCard-DjcUGxo9.cjs");exports.DataCard=a.DataCard;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.tech-data-card{position:relative;padding:20px 24px;border-radius:4px;overflow:hidden;box-sizing:border-box}.tech-data-card--animate{animation:techFadeIn .5s ease-out}.tech-data-card--default{background:var(--tech-bg-card);border:1px solid var(--tech-border)}.tech-data-card--gradient{background:linear-gradient(135deg,var(--tech-bg-card) 0%,rgba(0,212,255,.08) 100%);border:1px solid var(--tech-border)}.tech-data-card--glass{background:#0d113599;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--tech-border)}.tech-data-card--outline{background:transparent;border:1px solid var(--tech-card-color, var(--tech-primary));box-shadow:0 0 15px #00d4ff1a}.tech-data-card__corner{position:absolute;width:12px;height:12px;z-index:1}.tech-data-card__corner--tl{top:0;left:0;border-top:2px solid var(--tech-card-color, var(--tech-primary));border-left:2px solid var(--tech-card-color, var(--tech-primary))}.tech-data-card__corner--br{bottom:0;right:0;border-bottom:2px solid var(--tech-card-color, var(--tech-primary));border-right:2px solid var(--tech-card-color, var(--tech-primary))}.tech-data-card__header{display:flex;align-items:center;gap:8px;margin-bottom:12px}.tech-data-card__icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:4px;background:var(--tech-glow-primary);color:var(--tech-card-color, var(--tech-primary));font-size:16px}.tech-data-card__title{font-size:14px;color:var(--tech-text-secondary);font-weight:500;letter-spacing:1px;text-transform:uppercase}.tech-data-card__body{position:relative}.tech-data-card__value-row{display:flex;align-items:baseline;gap:6px}.tech-data-card__value{font-family:var(--tech-font-digital);font-size:32px;font-weight:700;color:var(--tech-card-color, var(--tech-primary));line-height:1.2;text-shadow:0 0 10px var(--tech-glow-primary)}.tech-data-card__unit{font-size:14px;color:var(--tech-text-secondary);margin-left:4px}.tech-data-card__trend{display:flex;align-items:center;gap:4px;margin-top:8px;font-size:13px}.tech-data-card__trend--up{color:var(--tech-success)}.tech-data-card__trend--down{color:var(--tech-danger)}.tech-data-card__trend--flat{color:var(--tech-text-muted)}.tech-data-card__trend-icon{font-size:10px}.tech-data-card__trend-value{font-family:var(--tech-font-digital);font-weight:500}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './components/DataCard/entry'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../chunks/jsx-runtime-7asRZgsb.cjs");const e=require("../chunks/DecorationLine-Be4QQyry.cjs");exports.DecorationLine=e.DecorationLine;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.tech-decoration-line{position:relative}.tech-decoration-line--horizontal{width:var(--tech-line-length);height:var(--tech-line-thickness)}.tech-decoration-line--vertical{width:var(--tech-line-thickness);height:var(--tech-line-length)}.tech-decoration-line--solid{background:var(--tech-line-color)}.tech-decoration-line--dashed{background:repeating-linear-gradient(90deg,var(--tech-line-color) 0,var(--tech-line-color) 8px,transparent 8px,transparent 16px)}.tech-decoration-line--vertical.tech-decoration-line--dashed{background:repeating-linear-gradient(180deg,var(--tech-line-color) 0,var(--tech-line-color) 8px,transparent 8px,transparent 16px)}.tech-decoration-line--gradient{background:linear-gradient(90deg,transparent,var(--tech-line-color),transparent)}.tech-decoration-line--vertical.tech-decoration-line--gradient{background:linear-gradient(180deg,transparent,var(--tech-line-color),transparent)}.tech-decoration-line--animate.tech-decoration-line--gradient{background-size:200% 100%;animation:techBorderFlow 3s linear infinite}.tech-decoration-line--double{background:var(--tech-line-color);display:flex;flex-direction:column;justify-content:center}.tech-decoration-line__inner{height:1px;background:var(--tech-bg-dark);margin:1px 0}.tech-decoration-line--dot-wave{background:transparent;height:4px;overflow:hidden}.tech-decoration-line__dots{display:flex;gap:6px;align-items:center;height:100%}.tech-decoration-line__dot{width:3px;height:3px;border-radius:50%;background:var(--tech-line-color);flex-shrink:0}.tech-decoration-line--animate .tech-decoration-line__dot{animation:techDotBlink 1.5s ease-in-out infinite}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './components/DecorationLine/entry'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../chunks/jsx-runtime-7asRZgsb.cjs");const e=require("../chunks/DigitalNumber-BWP5OjvN.cjs");exports.DigitalNumber=e.DigitalNumber;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.tech-digital-number{display:inline-flex;align-items:baseline;gap:4px;font-family:var(--tech-font-digital)}.tech-digital-number__value{font-size:var(--tech-digital-size);font-weight:700;color:var(--tech-digital-color);text-shadow:0 0 10px currentColor,0 0 20px rgba(0,212,255,.3);letter-spacing:2px;transition:transform .3s ease}.tech-digital-number--flipping .tech-digital-number__value{animation:techNumberFlip .3s ease-out}.tech-digital-number__prefix,.tech-digital-number__suffix{font-size:calc(var(--tech-digital-size) * .4);color:var(--tech-text-secondary);font-weight:400}.tech-digital-number__prefix{margin-right:2px}.tech-digital-number__suffix{margin-left:4px}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './components/DigitalNumber/entry'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../chunks/jsx-runtime-7asRZgsb.cjs");const e=require("../chunks/Drawer-CuoztnnD.cjs");exports.Drawer=e.Drawer;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.tech-drawer-root{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000}.tech-drawer-mask{position:absolute;top:0;right:0;bottom:0;left:0;background:#0009;animation:techDrawerMaskIn .3s ease}@keyframes techDrawerMaskIn{0%{opacity:0}to{opacity:1}}.tech-drawer{position:absolute;display:flex;flex-direction:column;background:var(--tech-bg-medium);border:1px solid var(--tech-border);overflow:hidden}.tech-drawer--right{top:0;right:0;bottom:0;border-right:none;border-top:none;border-bottom:none;animation:techDrawerSlideRight .3s cubic-bezier(.4,0,.2,1)}.tech-drawer--left{top:0;left:0;bottom:0;border-left:none;border-top:none;border-bottom:none;animation:techDrawerSlideLeft .3s cubic-bezier(.4,0,.2,1)}.tech-drawer--top{top:0;left:0;right:0;border-top:none;border-left:none;border-right:none;animation:techDrawerSlideTop .3s cubic-bezier(.4,0,.2,1)}.tech-drawer--bottom{bottom:0;left:0;right:0;border-bottom:none;border-left:none;border-right:none;animation:techDrawerSlideBottom .3s cubic-bezier(.4,0,.2,1)}@keyframes techDrawerSlideRight{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes techDrawerSlideLeft{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes techDrawerSlideTop{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes techDrawerSlideBottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}.tech-drawer--neon{border-color:var(--tech-primary);box-shadow:0 0 30px var(--tech-glow-primary),inset 0 0 30px var(--tech-glow-primary)}.tech-drawer--scan .tech-drawer__scan-line{display:block}.tech-drawer__scan-line{display:none;position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--tech-primary),transparent);animation:techDrawerScan 3s linear infinite;opacity:.5;z-index:2}@keyframes techDrawerScan{0%{top:0}to{top:100%}}.tech-drawer__corner{position:absolute;width:12px;height:12px;z-index:1}.tech-drawer__corner--tl{top:0;left:0;border-top:2px solid var(--tech-primary);border-left:2px solid var(--tech-primary)}.tech-drawer__corner--tr{top:0;right:0;border-top:2px solid var(--tech-primary);border-right:2px solid var(--tech-primary)}.tech-drawer__corner--bl{bottom:0;left:0;border-bottom:2px solid var(--tech-primary);border-left:2px solid var(--tech-primary)}.tech-drawer__corner--br{bottom:0;right:0;border-bottom:2px solid var(--tech-primary);border-right:2px solid var(--tech-primary)}.tech-drawer__edge-line{position:absolute;top:0;bottom:0;width:2px;background:linear-gradient(180deg,transparent 0%,var(--tech-primary) 20%,var(--tech-primary) 80%,transparent 100%);opacity:.4;z-index:1}.tech-drawer--right .tech-drawer__edge-line{left:0}.tech-drawer--left .tech-drawer__edge-line{right:0}.tech-drawer--neon .tech-drawer__edge-line{opacity:.8;box-shadow:0 0 8px var(--tech-glow-primary)}.tech-drawer__header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--tech-border);flex-shrink:0}.tech-drawer--neon .tech-drawer__header{border-bottom-color:var(--tech-primary);box-shadow:0 2px 8px var(--tech-glow-primary)}.tech-drawer__title{font-size:16px;font-weight:600;color:var(--tech-primary);letter-spacing:2px;text-transform:uppercase}.tech-drawer__close{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--tech-border);border-radius:2px;background:transparent;color:var(--tech-text-secondary);cursor:pointer;transition:all .2s}.tech-drawer__close:hover{border-color:var(--tech-primary);color:var(--tech-primary);box-shadow:0 0 8px var(--tech-glow-primary)}.tech-drawer__body{flex:1;padding:20px;overflow-y:auto;color:var(--text-secondary, var(--tech-text-secondary))}.tech-drawer__footer{padding:12px 20px;border-top:1px solid var(--tech-border);display:flex;justify-content:flex-end;gap:8px;flex-shrink:0}.tech-drawer--neon .tech-drawer__footer{border-top-color:var(--tech-primary);box-shadow:0 -2px 8px var(--tech-glow-primary)}
|
package/dist/Drawer.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './components/Drawer/entry'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../chunks/jsx-runtime-7asRZgsb.cjs");const t=require("../chunks/FloatingButton-nOl8ZHul.cjs");exports.FloatingButton=t.FloatingButton;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.tech-fab{width:var(--tech-fab-size, 48px);height:var(--tech-fab-size, 48px);border-radius:50%;background:var(--tech-fab-bg-card, var(--tech-bg-card));border:1px solid var(--tech-fab-border, var(--tech-border));display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;overflow:visible;transition:background-color .3s,border-color .3s,box-shadow .3s,transform .2s;user-select:none;-webkit-user-select:none;touch-action:none}.tech-fab--draggable{cursor:grab}.tech-fab--dragging{cursor:grabbing;transform:scale(1.1);transition:background-color .3s,border-color .3s,box-shadow .3s}.tech-fab--hovered{border-color:var(--tech-fab-border-active, var(--tech-border-active));box-shadow:0 0 16px var(--tech-fab-glow, var(--tech-glow-primary))}.tech-fab__content{display:flex;align-items:center;justify-content:center;gap:6px;z-index:2;color:var(--tech-fab-text-primary, var(--tech-text-primary));pointer-events:none}.tech-fab__icon{display:flex;align-items:center;justify-content:center;font-size:18px;line-height:1}.tech-fab__label{font-size:12px;white-space:nowrap;font-weight:500}.tech-fab__pulse{position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:50%;border:1px solid var(--tech-fab-primary, var(--tech-primary));opacity:0;animation:techFabPulse 2.5s ease-out infinite;pointer-events:none}@keyframes techFabPulse{0%{top:-4px;right:-4px;bottom:-4px;left:-4px;opacity:.6}to{top:-20px;right:-20px;bottom:-20px;left:-20px;opacity:0}}.tech-fab__corner{position:absolute;width:8px;height:8px;z-index:1;opacity:.5;transition:opacity .3s,border-color .3s}.tech-fab--hovered .tech-fab__corner{opacity:1}.tech-fab__corner--tl{top:4px;left:4px;border-top:2px solid var(--tech-fab-primary, var(--tech-primary));border-left:2px solid var(--tech-fab-primary, var(--tech-primary))}.tech-fab__corner--tr{top:4px;right:4px;border-top:2px solid var(--tech-fab-primary, var(--tech-primary));border-right:2px solid var(--tech-fab-primary, var(--tech-primary))}.tech-fab__corner--bl{bottom:4px;left:4px;border-bottom:2px solid var(--tech-fab-primary, var(--tech-primary));border-left:2px solid var(--tech-fab-primary, var(--tech-primary))}.tech-fab__corner--br{bottom:4px;right:4px;border-bottom:2px solid var(--tech-fab-primary, var(--tech-primary));border-right:2px solid var(--tech-fab-primary, var(--tech-primary))}.tech-fab--neon{border-color:var(--tech-fab-primary, var(--tech-primary));box-shadow:0 0 10px var(--tech-fab-glow, var(--tech-glow-primary))}.tech-fab--neon.tech-fab--hovered{box-shadow:0 0 20px var(--tech-fab-glow, var(--tech-glow-primary)),0 0 40px var(--tech-fab-glow, var(--tech-glow-primary))}.tech-fab--neon .tech-fab__content{color:var(--tech-fab-primary, var(--tech-primary))}.tech-fab--glow{border-color:var(--tech-fab-primary, var(--tech-primary));animation:techFabGlow 2s ease-in-out infinite alternate}.tech-fab--glow .tech-fab__content{color:var(--tech-fab-primary, var(--tech-primary))}@keyframes techFabGlow{0%{box-shadow:0 0 8px var(--tech-fab-glow, var(--tech-glow-primary)),0 0 16px var(--tech-fab-glow, var(--tech-glow-primary))}to{box-shadow:0 0 16px var(--tech-fab-glow, var(--tech-glow-primary)),0 0 32px var(--tech-fab-glow, var(--tech-glow-primary))}}.tech-fab--glass{background:#ffffff0d;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-color:#ffffff1a}.tech-fab--glass.tech-fab--hovered{background:#ffffff1a;border-color:var(--tech-fab-primary, var(--tech-primary));box-shadow:0 0 20px var(--tech-fab-glow, var(--tech-glow-primary))}.tech-fab--glass .tech-fab__corner{opacity:.3}.tech-fab--glass.tech-fab--hovered .tech-fab__corner{opacity:.8}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './components/FloatingButton/entry'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../chunks/jsx-runtime-7asRZgsb.cjs");const e=require("../chunks/FlowLight-DLBCaU07.cjs");exports.FlowLight=e.FlowLight;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.tech-flow-light{position:relative;width:100%;height:100%;overflow:hidden;background:var(--tech-bg-dark)}.tech-flow-light__layer{position:absolute;top:0;right:0;bottom:0;left:0;opacity:var(--tech-flow-opacity, .6);pointer-events:none}.tech-flow-light__content{position:relative;z-index:2;width:100%;height:100%}.tech-flow-light--aurora .tech-flow-light__aurora{position:absolute;width:200%;height:60%;filter:blur(80px);opacity:var(--tech-flow-opacity, .6);pointer-events:none}.tech-flow-light__aurora--1{top:-20%;left:-50%;background:linear-gradient(90deg,transparent 0%,var(--tech-flow-color, var(--tech-primary)) 15%,transparent 30%,var(--tech-flow-color, var(--tech-secondary)) 50%,transparent 70%,var(--tech-flow-color, var(--tech-primary)) 85%,transparent 100%);animation:techAuroraMove1 calc(var(--tech-flow-speed, 6s) * 3) ease-in-out infinite}.tech-flow-light__aurora--2{top:-10%;left:-30%;background:linear-gradient(90deg,transparent 0%,var(--tech-flow-color, var(--tech-secondary)) 20%,transparent 40%,var(--tech-flow-color, var(--tech-primary)) 60%,transparent 80%,var(--tech-flow-color, var(--tech-secondary)) 95%,transparent 100%);animation:techAuroraMove2 calc(var(--tech-flow-speed, 6s) * 4) ease-in-out infinite;opacity:calc(var(--tech-flow-opacity, .6) * .7)}.tech-flow-light__aurora--3{top:-5%;left:-60%;background:linear-gradient(90deg,transparent 0%,var(--tech-flow-color, var(--tech-primary-dark, #0098d4)) 25%,transparent 50%,var(--tech-flow-color, var(--tech-primary)) 75%,transparent 100%);animation:techAuroraMove3 calc(var(--tech-flow-speed, 6s) * 5) ease-in-out infinite;opacity:calc(var(--tech-flow-opacity, .6) * .5)}@keyframes techAuroraMove1{0%,to{transform:translate(0) rotate(-3deg) scaleY(1)}33%{transform:translate(15%) rotate(2deg) scaleY(1.2)}66%{transform:translate(-10%) rotate(-1deg) scaleY(.9)}}@keyframes techAuroraMove2{0%,to{transform:translate(0) rotate(2deg) scaleY(1)}50%{transform:translate(-20%) rotate(-3deg) scaleY(1.3)}}@keyframes techAuroraMove3{0%,to{transform:translate(0) rotate(-1deg)}50%{transform:translate(25%) rotate(3deg)}}.tech-flow-light--grid .tech-flow-light__grid-canvas{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(var(--tech-flow-color, var(--tech-border)) 1px,transparent 1px),linear-gradient(90deg,var(--tech-flow-color, var(--tech-border)) 1px,transparent 1px);background-size:40px 40px;opacity:var(--tech-flow-opacity, .6);animation:techGridFlow calc(var(--tech-flow-speed, 6s) * 2) linear infinite;pointer-events:none}.tech-flow-light--grid:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at 50% 50%,transparent 0%,var(--tech-bg-dark) 70%);pointer-events:none;z-index:1}@keyframes techGridFlow{0%{background-position:0 0}to{background-position:40px 40px}}.tech-flow-light--particle .tech-flow-light__particles{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.tech-flow-light__particle{position:absolute;left:var(--tech-flow-px);top:var(--tech-flow-py);width:var(--tech-flow-pr, 2px);height:var(--tech-flow-pr, 2px);border-radius:50%;background:var(--tech-flow-color, var(--tech-primary));box-shadow:0 0 6px var(--tech-flow-color, var(--tech-primary));opacity:0;animation:techParticleFloat var(--tech-flow-pd, 3s) var(--tech-flow-ps, 2s) ease-in-out infinite}@keyframes techParticleFloat{0%{opacity:0;transform:translateY(0) scale(.5)}20%{opacity:var(--tech-flow-opacity, .6)}80%{opacity:var(--tech-flow-opacity, .6)}to{opacity:0;transform:translateY(-80px) scale(1.2)}}.tech-flow-light--wave .tech-flow-light__waves{position:absolute;bottom:0;left:0;right:0;height:50%;pointer-events:none}.tech-flow-light__wave{position:absolute;bottom:0;left:-50%;width:200%;height:100%;opacity:var(--tech-flow-opacity, .6)}.tech-flow-light__wave--1{background:linear-gradient(0deg,var(--tech-flow-color, var(--tech-primary)) 0%,transparent 60%);opacity:calc(var(--tech-flow-opacity, .6) * .15);animation:techWaveMove calc(var(--tech-flow-speed, 6s) * 1.5) linear infinite}.tech-flow-light__wave--2{background:linear-gradient(0deg,var(--tech-flow-color, var(--tech-secondary)) 0%,transparent 50%);opacity:calc(var(--tech-flow-opacity, .6) * .12);animation:techWaveMove calc(var(--tech-flow-speed, 6s) * 2) linear infinite reverse}.tech-flow-light__wave--3{background:linear-gradient(0deg,var(--tech-flow-color, var(--tech-primary)) 0%,transparent 40%);opacity:calc(var(--tech-flow-opacity, .6) * .08);animation:techWaveMove calc(var(--tech-flow-speed, 6s) * 2.5) linear infinite}@keyframes techWaveMove{0%{transform:translate(0) scaleY(1)}25%{transform:translate(-5%) scaleY(1.1)}50%{transform:translate(0) scaleY(.95)}75%{transform:translate(5%) scaleY(1.05)}to{transform:translate(0) scaleY(1)}}.tech-flow-light--low .tech-flow-light__aurora,.tech-flow-light--low .tech-flow-light__grid-canvas,.tech-flow-light--low .tech-flow-light__particles,.tech-flow-light--low .tech-flow-light__waves{filter:blur(2px) brightness(.5)}.tech-flow-light--high .tech-flow-light__aurora,.tech-flow-light--high .tech-flow-light__particles,.tech-flow-light--high .tech-flow-light__waves{filter:brightness(1.3)}.tech-flow-light--high .tech-flow-light__grid-canvas{filter:brightness(1.5)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './components/FlowLight/entry'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../chunks/jsx-runtime-7asRZgsb.cjs");const e=require("../chunks/Icon-ISAK5vLx.cjs");exports.Icon=e.Icon;exports.iconNames=e.iconNames;
|