shujie-ui 0.0.3 → 0.1.2

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 (46) hide show
  1. package/README.md +161 -118
  2. package/dist/shujie-ui.css +1 -1
  3. package/dist/shujie-ui.es.js +275 -46
  4. package/dist/shujie-ui.umd.js +1 -1
  5. package/easycom.json +8 -0
  6. package/package.json +98 -95
  7. package/src/components/sj-badge/index.ts +10 -0
  8. package/src/components/sj-badge/sj-badge.vue +132 -0
  9. package/src/components/sj-badge/types.ts +17 -0
  10. package/src/components/sj-button/index.ts +10 -0
  11. package/src/components/sj-button/sj-button.vue +267 -0
  12. package/src/components/sj-button/types.ts +37 -0
  13. package/src/components/sj-cell/index.ts +10 -0
  14. package/src/components/sj-cell/sj-cell.vue +170 -0
  15. package/src/components/sj-cell/types.ts +30 -0
  16. package/src/components/sj-divider/index.ts +10 -0
  17. package/src/components/sj-divider/sj-divider.vue +140 -0
  18. package/src/components/sj-divider/types.ts +16 -0
  19. package/src/components/sj-icon/iconfont.scss +36 -0
  20. package/src/components/sj-icon/index.ts +10 -0
  21. package/src/components/sj-icon/sj-icon.vue +51 -0
  22. package/src/components/sj-icon/types.ts +14 -0
  23. package/src/components/sj-loading/index.ts +10 -0
  24. package/src/components/sj-loading/sj-loading.vue +133 -0
  25. package/src/components/sj-loading/types.ts +20 -0
  26. package/src/components/sj-space/index.ts +10 -0
  27. package/src/components/sj-space/sj-space.vue +67 -0
  28. package/src/components/sj-space/types.ts +14 -0
  29. package/src/components/sj-tag/index.ts +10 -0
  30. package/src/components/sj-tag/sj-tag.vue +179 -0
  31. package/src/components/sj-tag/types.ts +16 -0
  32. package/src/env.d.ts +7 -0
  33. package/src/hooks/index.ts +3 -0
  34. package/src/hooks/useLoading.ts +30 -0
  35. package/src/hooks/useScroll.ts +42 -0
  36. package/src/hooks/useVisible.ts +22 -0
  37. package/src/index.ts +59 -0
  38. package/src/styles/index.scss +7 -0
  39. package/src/styles/mixins.scss +161 -0
  40. package/src/styles/prelude.scss +3 -0
  41. package/src/styles/reset.scss +33 -0
  42. package/src/styles/variables.scss +128 -0
  43. package/src/utils/format.ts +119 -0
  44. package/src/utils/index.ts +3 -0
  45. package/src/utils/platform.ts +63 -0
  46. package/src/utils/validate.ts +37 -0
package/README.md CHANGED
@@ -1,118 +1,161 @@
1
- # shujie-ui
2
-
3
- 一个基于 Vue 3 + TypeScript 的 UniApp 组件库,兼容小程序、H5、App。
4
-
5
- ## 特性
6
-
7
- - Vue 3 + TypeScript + Composition API
8
- - SCSS 设计系统(色彩/排版/间距/圆角/阴影)
9
- - 全平台兼容(微信/支付宝/百度/字节/QQ 小程序 + H5 + App)
10
- - 按需引入(easycom 自动注册)
11
- - 单元测试覆盖
12
- - VitePress 文档站
13
-
14
- ## 安装
15
-
16
- ```bash
17
- npm install shujie-ui
18
- ```
19
-
20
- ## 快速上手
21
-
22
- ### 全局引入
23
-
24
- ```ts
25
- // main.ts
26
- import { createSSRApp } from 'vue'
27
- import SjUI from 'shujie-ui'
28
- import 'shujie-ui/dist/shujie-ui.css'
29
-
30
- const app = createSSRApp(App)
31
- app.use(SjUI)
32
- ```
33
-
34
- ### 按需引入(easycom)
35
-
36
- 在 `pages.json` 中配置:
37
-
38
- ```json
39
- {
40
- "easycom": {
41
- "custom": {
42
- "^sj-(.*)": "shujie-ui/src/components/sj-$1/sj-$1.vue"
43
- }
44
- }
45
- }
46
- ```
47
-
48
- 配置后直接在模板中使用,无需手动 import:
49
-
50
- ```vue
51
- <template>
52
- <sj-button type="primary">按钮</sj-button>
53
- </template>
54
- ```
55
-
56
- ### 手动引入
57
-
58
- ```vue
59
- <script setup>
60
- import { SjButton } from 'shujie-ui'
61
- </script>
62
-
63
- <template>
64
- <sj-button type="primary">按钮</sj-button>
65
- </template>
66
- ```
67
-
68
- ## 组件列表
69
-
70
- | 组件 | 说明 |
71
- |------|------|
72
- | sj-button | 按钮,支持多种类型/尺寸/形状/状态 |
73
- | sj-icon | 图标,基于 iconfont 字体 |
74
- | sj-cell | 单元格,列表项展示 |
75
- | sj-loading | 加载指示器,支持 circular/spinner |
76
-
77
- ## 设计系统
78
-
79
- ### 主色
80
-
81
- | 名称 | 色值 | 用途 |
82
- |------|------|------|
83
- | Primary | `#2979ff` | 品牌主色 |
84
- | Success | `#19be6b` | 成功状态 |
85
- | Warning | `#ff9900` | 警告提示 |
86
- | Danger | `#fa3534` | 错误/危险 |
87
- | Info | `#909399` | 次要信息 |
88
-
89
- ### 自定义主题
90
-
91
- ```scss
92
- // 覆盖变量
93
- $sj-primary: #1890ff;
94
-
95
- // 然后引入样式
96
- @import 'shujie-ui/src/styles/index.scss';
97
- ```
98
-
99
- ## 工具函数
100
-
101
- ```ts
102
- import { addUnit, debounce, throttle, deepClone, isPhone, isEmail } from 'shujie-ui'
103
- ```
104
-
105
- ## Hooks
106
-
107
- ```ts
108
- import { useVisible, useLoading, useScroll } from 'shujie-ui'
109
- ```
110
-
111
- ## 链接
112
-
113
- - [npm 包](https://www.npmjs.com/package/shujie-ui)
114
- - [Gitee 仓库](https://gitee.com/jia-shujie666/shujie-ui)
115
-
116
- ## License
117
-
118
- MIT
1
+ # shujie-ui
2
+
3
+ 一个基于 Vue 3 + TypeScript 的 UniApp 组件库,兼容小程序、H5、App。
4
+
5
+ ## 特性
6
+
7
+ - Vue 3 + TypeScript + Composition API
8
+ - SCSS 设计系统(色彩/排版/间距/圆角/阴影)
9
+ - 全平台兼容(微信/支付宝/百度/字节/QQ 小程序 + H5 + App)
10
+ - 按需引入(easycom 自动注册)
11
+ - 单元测试覆盖
12
+ - VitePress 文档站
13
+
14
+ ## 安装
15
+
16
+ ```bash
17
+ npm install shujie-ui
18
+ ```
19
+
20
+ ## 快速上手
21
+
22
+ ### 平台说明(必读)
23
+
24
+ | 场景 | 推荐方式 | 说明 |
25
+ |------|----------|------|
26
+ | **uni-app 小程序**(微信/支付宝等) | **easycom + 包内 `src/**/*.vue`** | 预打包的 `dist/*.es.js` 依赖标准 Vue 运行时辅助函数,与 `@dcloudio/uni-mp-vue` 不兼容,**请勿**在小程序里 `import SjUI from 'shujie-ui'` + `app.use`。 |
27
+ | **H5 / App、或仅工具函数** | `app.use(SjUI)` + `dist/shujie-ui.css`,或按需 `import { SjButton } from 'shujie-ui'` | 使用 npm 中的 **`dist`** 即可。 |
28
+
29
+ 自 **v0.1.1** 起,发布包包含 **`src`**(组件源码、样式、utils、hooks),小程序请按下方 **easycom** 使用。
30
+
31
+ ### 1. uni-app:easycom(小程序推荐)
32
+
33
+ 将仓库根目录 **`easycom.json`** 中与 `pages.json` 同级的 `easycom` 段合并到你的 **`pages.json`**(或按下面手写):
34
+
35
+ ```json
36
+ {
37
+ "easycom": {
38
+ "autoscan": true,
39
+ "custom": {
40
+ "^sj-(.*)": "shujie-ui/src/components/sj-$1/sj-$1.vue"
41
+ }
42
+ }
43
+ }
44
+ ```
45
+
46
+ 组件 SFC 已内置 `@import` 设计变量与 mixin,**宿主项目无需**再为 `shujie-ui` 配置 Vite `additionalData`。
47
+
48
+ 模板里直接使用(**`sj-` 前缀 + 短横线**):
49
+
50
+ ```vue
51
+ <template>
52
+ <view class="page">
53
+ <sj-button type="primary">按钮</sj-button>
54
+ <sj-cell title="标题" value="内容" is-link />
55
+ </view>
56
+ </template>
57
+ ```
58
+
59
+ 可选:在入口再引一次聚合样式(与 SFC scoped 并存,用于 reset等):
60
+
61
+ ```ts
62
+ import 'shujie-ui/dist/shujie-ui.css'
63
+ ```
64
+
65
+ ### 2. uni-app:按路径按需引入 `.vue`
66
+
67
+ ```vue
68
+ <script setup lang="ts">
69
+ import SjButton from 'shujie-ui/src/components/sj-button/sj-button.vue'
70
+ </script>
71
+ ```
72
+
73
+ ### 3. H5 / 非小程序:全局引入 `dist`
74
+
75
+ 组件样式集中在 **`dist/shujie-ui.css`**。在 **`main.ts`**:
76
+
77
+ ```ts
78
+ import { createSSRApp } from 'vue'
79
+ import App from './App.vue'
80
+ import SjUI from 'shujie-ui'
81
+ import 'shujie-ui/dist/shujie-ui.css'
82
+
83
+ export function createApp() {
84
+ const app = createSSRApp(App)
85
+ app.use(SjUI)
86
+ return { app }
87
+ }
88
+ ```
89
+
90
+ ### 4. H5 / 非小程序:按需 `import` 命名导出
91
+
92
+ ```ts
93
+ import 'shujie-ui/dist/shujie-ui.css'
94
+ ```
95
+
96
+ ```vue
97
+ <script setup lang="ts">
98
+ import { SjButton, SjCell } from 'shujie-ui'
99
+ </script>
100
+
101
+ <template>
102
+ <sj-button type="primary">按钮</sj-button>
103
+ <SjCell title="标题" value="内容" />
104
+ </template>
105
+ ```
106
+
107
+ ## 组件列表
108
+
109
+ | 组件 | 说明 |
110
+ |------|------|
111
+ | sj-button | 按钮,多种类型/尺寸/形状/状态 |
112
+ | sj-icon | 图标(iconfont,需自行替换字体资源) |
113
+ | sj-cell | 单元格列表项 |
114
+ | sj-loading | 加载指示 |
115
+ | sj-divider | 分隔线 |
116
+ | sj-tag | 标签 |
117
+ | sj-badge | 徽标 |
118
+ | sj-space | 间距布局 |
119
+
120
+ ## 设计系统
121
+
122
+ ### 主色
123
+
124
+ | 名称 | 色值 | 用途 |
125
+ |------|------|------|
126
+ | Primary | `#2979ff` | 品牌主色 |
127
+ | Success | `#19be6b` | 成功状态 |
128
+ | Warning | `#ff9900` | 警告提示 |
129
+ | Danger | `#fa3534` | 错误/危险 |
130
+ | Info | `#909399` | 次要信息 |
131
+
132
+ ### 自定义主题
133
+
134
+ ```scss
135
+ // 覆盖变量
136
+ $sj-primary: #1890ff;
137
+
138
+ // 然后引入样式
139
+ @import 'shujie-ui/src/styles/index.scss';
140
+ ```
141
+
142
+ ## 工具函数
143
+
144
+ ```ts
145
+ import { addUnit, debounce, throttle, deepClone, isPhone, isEmail } from 'shujie-ui'
146
+ ```
147
+
148
+ ## Hooks
149
+
150
+ ```ts
151
+ import { useVisible, useLoading, useScroll } from 'shujie-ui'
152
+ ```
153
+
154
+ ## 链接
155
+
156
+ - [npm 包](https://www.npmjs.com/package/shujie-ui)
157
+ - [Gitee 仓库](https://gitee.com/jia-shujie666/shujie-ui)
158
+
159
+ ## License
160
+
161
+ MIT
@@ -1,2 +1,2 @@
1
- .sj-button[data-v-d5bd5c39]{box-sizing:border-box;text-align:center;white-space:nowrap;appearance:none;cursor:pointer;border:none;outline:none;justify-content:center;align-items:center;margin:0;padding:0;font-weight:500;line-height:1;transition:all .3s cubic-bezier(.645,.045,.355,1);display:inline-flex}.sj-button--small[data-v-d5bd5c39]{height:56rpx;padding:0 24rpx;font-size:24rpx}.sj-button--medium[data-v-d5bd5c39]{height:72rpx;padding:0 32rpx;font-size:28rpx}.sj-button--large[data-v-d5bd5c39]{height:88rpx;padding:0 48rpx;font-size:32rpx}.sj-button--default[data-v-d5bd5c39]{color:#606266;border:1rpx solid #e4e7ed;background:#fff}.sj-button--primary[data-v-d5bd5c39]{color:#fff;background:#2979ff}.sj-button--success[data-v-d5bd5c39]{color:#fff;background:#19be6b}.sj-button--warning[data-v-d5bd5c39]{color:#fff;background:#f90}.sj-button--danger[data-v-d5bd5c39]{color:#fff;background:#fa3534}.sj-button--info[data-v-d5bd5c39]{color:#fff;background:#909399}.sj-button--square[data-v-d5bd5c39]{border-radius:8rpx}.sj-button--round[data-v-d5bd5c39]{border-radius:999rpx}.sj-button--circle[data-v-d5bd5c39]{border-radius:50%;padding:0}.sj-button--circle.sj-button--small[data-v-d5bd5c39]{width:56rpx}.sj-button--circle.sj-button--medium[data-v-d5bd5c39]{width:72rpx}.sj-button--circle.sj-button--large[data-v-d5bd5c39]{width:88rpx}.sj-button--plain[data-v-d5bd5c39]{background:0 0!important}.sj-button--plain.sj-button--primary[data-v-d5bd5c39]{color:#2979ff;border:1rpx solid #2979ff}.sj-button--plain.sj-button--success[data-v-d5bd5c39]{color:#19be6b;border:1rpx solid #19be6b}.sj-button--plain.sj-button--warning[data-v-d5bd5c39]{color:#f90;border:1rpx solid #f90}.sj-button--plain.sj-button--danger[data-v-d5bd5c39]{color:#fa3534;border:1rpx solid #fa3534}.sj-button--plain.sj-button--info[data-v-d5bd5c39]{color:#909399;border:1rpx solid #909399}.sj-button--hairline[data-v-d5bd5c39]{position:relative;border-width:0!important}.sj-button--hairline[data-v-d5bd5c39]:after{content:"";border-radius:inherit;border:1px solid inherit;pointer-events:none;transform-origin:0 0;position:absolute;inset:0;transform:scale(.5)}.sj-button--hairline.sj-button--default[data-v-d5bd5c39]:after{border-color:#e4e7ed}.sj-button--hairline.sj-button--primary[data-v-d5bd5c39]:after{border-color:#2979ff}.sj-button--hairline.sj-button--success[data-v-d5bd5c39]:after{border-color:#19be6b}.sj-button--hairline.sj-button--warning[data-v-d5bd5c39]:after{border-color:#f90}.sj-button--hairline.sj-button--danger[data-v-d5bd5c39]:after{border-color:#fa3534}.sj-button--hairline.sj-button--info[data-v-d5bd5c39]:after{border-color:#909399}.sj-button--disabled[data-v-d5bd5c39]{opacity:.5;cursor:not-allowed;pointer-events:none}.sj-button--loading[data-v-d5bd5c39]{cursor:default}.sj-button--block[data-v-d5bd5c39]{width:100%;display:flex}.sj-button--active[data-v-d5bd5c39]{opacity:.7}.sj-button__icon[data-v-d5bd5c39],.sj-button__loading[data-v-d5bd5c39]{margin-right:8rpx}.sj-button__loading-spinner[data-v-d5bd5c39]{width:32rpx;height:32rpx;border:4rpx solid currentColor;border-top-color:#0000;border-radius:50%;animation:.6s linear infinite sj-spin-d5bd5c39}.sj-button__text[data-v-d5bd5c39]{align-items:center;display:flex}@keyframes sj-spin-d5bd5c39{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.sj-cell[data-v-17f18255]{box-sizing:border-box;width:100%;padding:24rpx 32rpx;font-size:28rpx;background:#fff;align-items:center;line-height:1.5;display:flex;position:relative}.sj-cell[data-v-17f18255]:after{content:"";pointer-events:none;border-bottom:1rpx solid #e4e7ed;transform-origin:0 100%;position:absolute;bottom:0;left:0;right:0}.sj-cell--clickable[data-v-17f18255]{cursor:pointer}.sj-cell--clickable[data-v-17f18255]:active{background:#f2f3f5}.sj-cell--required[data-v-17f18255]:before{content:"*";left:16rpx;color:#fa3534;font-size:32rpx;position:absolute}.sj-cell--borderless[data-v-17f18255]:after{display:none}.sj-cell__left-icon[data-v-17f18255]{margin-right:16rpx;color:#909399}.sj-cell__title[data-v-17f18255]{flex:1;min-width:0}.sj-cell__title-text[data-v-17f18255]{color:#303133;font-size:28rpx}.sj-cell__label[data-v-17f18255]{margin-top:8rpx;color:#909399;font-size:24rpx;line-height:1.2;display:block}.sj-cell__value[data-v-17f18255]{text-align:right;flex:1;min-width:0;overflow:hidden}.sj-cell__value-text[data-v-17f18255]{color:#909399;font-size:28rpx;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sj-cell__value--alone[data-v-17f18255]{color:#303133;text-align:left}.sj-cell__right-icon[data-v-17f18255]{margin-left:8rpx;color:#c0c4cc;font-size:28rpx}.sj-loading[data-v-48c28ad3]{align-items:center;gap:16rpx;color:#909399;display:inline-flex}.sj-loading--vertical[data-v-48c28ad3]{gap:8rpx;flex-direction:column}.sj-loading__spinner[data-v-48c28ad3]{box-sizing:border-box;animation:.8s linear infinite sj-loading-rotate-48c28ad3;position:relative}.sj-loading__circular[data-v-48c28ad3]{width:100%;height:100%}.sj-loading__circular-ring[data-v-48c28ad3]{border:4rpx solid currentColor;box-sizing:border-box;border-top-color:#0000;border-radius:50%;width:100%;height:100%}.sj-loading__spinner-dot[data-v-48c28ad3]{opacity:0;background:currentColor;border-radius:50%;width:20%;height:20%;margin-left:-10%;position:absolute;top:0;left:50%}.sj-loading__spinner-dot[data-v-48c28ad3]:first-child{opacity:0;transform:rotate(0)}.sj-loading__spinner-dot[data-v-48c28ad3]:nth-child(2){opacity:.0833333;transform:rotate(30deg)}.sj-loading__spinner-dot[data-v-48c28ad3]:nth-child(3){opacity:.166667;transform:rotate(60deg)}.sj-loading__spinner-dot[data-v-48c28ad3]:nth-child(4){opacity:.25;transform:rotate(90deg)}.sj-loading__spinner-dot[data-v-48c28ad3]:nth-child(5){opacity:.333333;transform:rotate(120deg)}.sj-loading__spinner-dot[data-v-48c28ad3]:nth-child(6){opacity:.416667;transform:rotate(150deg)}.sj-loading__spinner-dot[data-v-48c28ad3]:nth-child(7){opacity:.5;transform:rotate(180deg)}.sj-loading__spinner-dot[data-v-48c28ad3]:nth-child(8){opacity:.583333;transform:rotate(210deg)}.sj-loading__spinner-dot[data-v-48c28ad3]:nth-child(9){opacity:.666667;transform:rotate(240deg)}.sj-loading__spinner-dot[data-v-48c28ad3]:nth-child(10){opacity:.75;transform:rotate(270deg)}.sj-loading__spinner-dot[data-v-48c28ad3]:nth-child(11){opacity:.833333;transform:rotate(300deg)}.sj-loading__spinner-dot[data-v-48c28ad3]:nth-child(12){opacity:.916667;transform:rotate(330deg)}.sj-loading__spinner--spinner[data-v-48c28ad3]{animation:none}.sj-loading__text[data-v-48c28ad3]{color:#909399;font-size:28rpx;line-height:1.5}@keyframes sj-loading-rotate-48c28ad3{0%{transform:rotate(0)}to{transform:rotate(360deg)}}view,text,scroll-view,swiper,input,textarea,button,image{box-sizing:border-box}button{line-height:inherit;font-size:inherit;background:0 0;border:none;outline:none;margin:0;padding:0}button:after{display:none}input,textarea{box-sizing:border-box}
1
+ .sj-button[data-v-330c439c]{box-sizing:border-box;text-align:center;white-space:nowrap;appearance:none;cursor:pointer;border:none;outline:none;justify-content:center;align-items:center;margin:0;padding:0;font-weight:500;line-height:1;transition:all .3s cubic-bezier(.645,.045,.355,1);display:inline-flex}.sj-button--small[data-v-330c439c]{height:56rpx;padding:0 24rpx;font-size:24rpx}.sj-button--medium[data-v-330c439c]{height:72rpx;padding:0 32rpx;font-size:28rpx}.sj-button--large[data-v-330c439c]{height:88rpx;padding:0 48rpx;font-size:32rpx}.sj-button--default[data-v-330c439c]{color:#606266;border:1rpx solid #e4e7ed;background:#fff}.sj-button--primary[data-v-330c439c]{color:#fff;background:#2979ff}.sj-button--success[data-v-330c439c]{color:#fff;background:#19be6b}.sj-button--warning[data-v-330c439c]{color:#fff;background:#f90}.sj-button--danger[data-v-330c439c]{color:#fff;background:#fa3534}.sj-button--info[data-v-330c439c]{color:#fff;background:#909399}.sj-button--square[data-v-330c439c]{border-radius:8rpx}.sj-button--round[data-v-330c439c]{border-radius:999rpx}.sj-button--circle[data-v-330c439c]{border-radius:50%;padding:0}.sj-button--circle.sj-button--small[data-v-330c439c]{width:56rpx}.sj-button--circle.sj-button--medium[data-v-330c439c]{width:72rpx}.sj-button--circle.sj-button--large[data-v-330c439c]{width:88rpx}.sj-button--plain[data-v-330c439c]{background:0 0!important}.sj-button--plain.sj-button--primary[data-v-330c439c]{color:#2979ff;border:1rpx solid #2979ff}.sj-button--plain.sj-button--success[data-v-330c439c]{color:#19be6b;border:1rpx solid #19be6b}.sj-button--plain.sj-button--warning[data-v-330c439c]{color:#f90;border:1rpx solid #f90}.sj-button--plain.sj-button--danger[data-v-330c439c]{color:#fa3534;border:1rpx solid #fa3534}.sj-button--plain.sj-button--info[data-v-330c439c]{color:#909399;border:1rpx solid #909399}.sj-button--hairline[data-v-330c439c]{position:relative;border-width:0!important}.sj-button--hairline[data-v-330c439c]:after{content:"";border-radius:inherit;border:1px solid inherit;pointer-events:none;transform-origin:0 0;position:absolute;inset:0;transform:scale(.5)}.sj-button--hairline.sj-button--default[data-v-330c439c]:after{border-color:#e4e7ed}.sj-button--hairline.sj-button--primary[data-v-330c439c]:after{border-color:#2979ff}.sj-button--hairline.sj-button--success[data-v-330c439c]:after{border-color:#19be6b}.sj-button--hairline.sj-button--warning[data-v-330c439c]:after{border-color:#f90}.sj-button--hairline.sj-button--danger[data-v-330c439c]:after{border-color:#fa3534}.sj-button--hairline.sj-button--info[data-v-330c439c]:after{border-color:#909399}.sj-button--disabled[data-v-330c439c]{opacity:.5;cursor:not-allowed;pointer-events:none}.sj-button--loading[data-v-330c439c]{cursor:default}.sj-button--block[data-v-330c439c]{width:100%;display:flex}.sj-button--active[data-v-330c439c]{opacity:.7}.sj-button__icon[data-v-330c439c],.sj-button__loading[data-v-330c439c]{margin-right:8rpx}.sj-button__loading-spinner[data-v-330c439c]{width:32rpx;height:32rpx;border:4rpx solid currentColor;border-top-color:#0000;border-radius:50%;animation:.6s linear infinite sj-spin-330c439c}.sj-button__text[data-v-330c439c]{align-items:center;display:flex}@keyframes sj-spin-330c439c{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.sj-cell[data-v-e1850ef0]{box-sizing:border-box;width:100%;padding:24rpx 32rpx;font-size:28rpx;background:#fff;align-items:center;line-height:1.5;display:flex;position:relative}.sj-cell[data-v-e1850ef0]:after{content:"";pointer-events:none;border-bottom:1rpx solid #e4e7ed;transform-origin:0 100%;position:absolute;bottom:0;left:0;right:0}.sj-cell--clickable[data-v-e1850ef0]{cursor:pointer}.sj-cell--clickable[data-v-e1850ef0]:active{background:#f2f3f5}.sj-cell--required[data-v-e1850ef0]:before{content:"*";left:16rpx;color:#fa3534;font-size:32rpx;position:absolute}.sj-cell--borderless[data-v-e1850ef0]:after{display:none}.sj-cell__left-icon[data-v-e1850ef0]{margin-right:16rpx;color:#909399}.sj-cell__title[data-v-e1850ef0]{flex:1;min-width:0}.sj-cell__title-text[data-v-e1850ef0]{color:#303133;font-size:28rpx}.sj-cell__label[data-v-e1850ef0]{margin-top:8rpx;color:#909399;font-size:24rpx;line-height:1.2;display:block}.sj-cell__value[data-v-e1850ef0]{text-align:right;flex:1;min-width:0;overflow:hidden}.sj-cell__value-text[data-v-e1850ef0]{color:#909399;font-size:28rpx;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sj-cell__value--alone[data-v-e1850ef0]{color:#303133;text-align:left}.sj-cell__right-icon[data-v-e1850ef0]{margin-left:8rpx;color:#c0c4cc;font-size:28rpx}.sj-loading[data-v-e04c0de9]{align-items:center;gap:16rpx;color:#909399;display:inline-flex}.sj-loading--vertical[data-v-e04c0de9]{gap:8rpx;flex-direction:column}.sj-loading__spinner[data-v-e04c0de9]{box-sizing:border-box;animation:.8s linear infinite sj-loading-rotate-e04c0de9;position:relative}.sj-loading__circular[data-v-e04c0de9]{width:100%;height:100%}.sj-loading__circular-ring[data-v-e04c0de9]{border:4rpx solid currentColor;box-sizing:border-box;border-top-color:#0000;border-radius:50%;width:100%;height:100%}.sj-loading__spinner-dot[data-v-e04c0de9]{opacity:0;background:currentColor;border-radius:50%;width:20%;height:20%;margin-left:-10%;position:absolute;top:0;left:50%}.sj-loading__spinner-dot[data-v-e04c0de9]:first-child{opacity:0;transform:rotate(0)}.sj-loading__spinner-dot[data-v-e04c0de9]:nth-child(2){opacity:.0833333;transform:rotate(30deg)}.sj-loading__spinner-dot[data-v-e04c0de9]:nth-child(3){opacity:.166667;transform:rotate(60deg)}.sj-loading__spinner-dot[data-v-e04c0de9]:nth-child(4){opacity:.25;transform:rotate(90deg)}.sj-loading__spinner-dot[data-v-e04c0de9]:nth-child(5){opacity:.333333;transform:rotate(120deg)}.sj-loading__spinner-dot[data-v-e04c0de9]:nth-child(6){opacity:.416667;transform:rotate(150deg)}.sj-loading__spinner-dot[data-v-e04c0de9]:nth-child(7){opacity:.5;transform:rotate(180deg)}.sj-loading__spinner-dot[data-v-e04c0de9]:nth-child(8){opacity:.583333;transform:rotate(210deg)}.sj-loading__spinner-dot[data-v-e04c0de9]:nth-child(9){opacity:.666667;transform:rotate(240deg)}.sj-loading__spinner-dot[data-v-e04c0de9]:nth-child(10){opacity:.75;transform:rotate(270deg)}.sj-loading__spinner-dot[data-v-e04c0de9]:nth-child(11){opacity:.833333;transform:rotate(300deg)}.sj-loading__spinner-dot[data-v-e04c0de9]:nth-child(12){opacity:.916667;transform:rotate(330deg)}.sj-loading__spinner--spinner[data-v-e04c0de9]{animation:none}.sj-loading__text[data-v-e04c0de9]{color:#909399;font-size:28rpx;line-height:1.5}@keyframes sj-loading-rotate-e04c0de9{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.sj-divider[data-v-5ed68b48]{box-sizing:border-box}.sj-divider--horizontal[data-v-5ed68b48]{width:100%;margin:24rpx 0;align-items:center;display:flex}.sj-divider--vertical[data-v-5ed68b48]{width:1rpx;min-height:32rpx;margin:0 16rpx;vertical-align:middle;align-self:stretch;display:inline-flex}.sj-divider--dashed .sj-divider__line[data-v-5ed68b48]{border-style:dashed}.sj-divider--hairline .sj-divider__line[data-v-5ed68b48]{border-width:1rpx}.sj-divider__line[data-v-5ed68b48]{box-sizing:border-box;border:0 solid #e4e7ed}.sj-divider__line--full[data-v-5ed68b48]{border-top-width:1rpx;flex:1;width:100%}.sj-divider__line--left[data-v-5ed68b48],.sj-divider__line--right[data-v-5ed68b48]{border-top-width:1rpx;flex:1}.sj-divider__text[data-v-5ed68b48]{padding:0 24rpx;flex-shrink:0;max-width:80%}.sj-divider__text-inner[data-v-5ed68b48]{color:#909399;font-size:24rpx;line-height:1.2}.sj-divider--vertical .sj-divider__line--full[data-v-5ed68b48]{width:1rpx;height:100%;min-height:inherit;border-top-width:0;border-left-width:1rpx;flex:1}.sj-tag[data-v-2d115ec9]{box-sizing:border-box;align-items:center;max-width:100%;font-weight:400;line-height:1;display:inline-flex;position:relative}.sj-tag--medium[data-v-2d115ec9]{padding:8rpx 16rpx;font-size:24rpx}.sj-tag--small[data-v-2d115ec9]{padding:4rpx 12rpx;font-size:20rpx}.sj-tag--round[data-v-2d115ec9]{border-radius:999rpx}.sj-tag[data-v-2d115ec9]:not(.sj-tag--round){border-radius:4rpx}.sj-tag__text[data-v-2d115ec9]{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.sj-tag__close[data-v-2d115ec9]{margin-left:4rpx;padding:0 2rpx;opacity:.75;justify-content:center;align-items:center;display:flex}.sj-tag__close-icon[data-v-2d115ec9]{font-size:1.2em;line-height:1}.sj-tag--default[data-v-2d115ec9]{color:#606266;background:#f3f4f6}.sj-tag--default.sj-tag--plain[data-v-2d115ec9]{color:#606266;border:1rpx solid #e4e7ed;background:0 0}.sj-tag--primary[data-v-2d115ec9]{color:#fff;background:#2979ff}.sj-tag--primary.sj-tag--plain[data-v-2d115ec9]{color:#2979ff;border:1rpx solid #70b1ff;background:#e8f0fe}.sj-tag--success[data-v-2d115ec9]{color:#fff;background:#19be6b}.sj-tag--success.sj-tag--plain[data-v-2d115ec9]{color:#19be6b;border:1rpx solid #8ce8b5;background:#e8f9f0}.sj-tag--warning[data-v-2d115ec9]{color:#fff;background:#f90}.sj-tag--warning.sj-tag--plain[data-v-2d115ec9]{color:#f90;border:1rpx solid #ffcb57;background:#fff4e0}.sj-tag--danger[data-v-2d115ec9]{color:#fff;background:#fa3534}.sj-tag--danger.sj-tag--plain[data-v-2d115ec9]{color:#fa3534;border:1rpx solid #ff8a8a;background:#fee8e8}.sj-tag--info[data-v-2d115ec9]{color:#fff;background:#909399}.sj-tag--info.sj-tag--plain[data-v-2d115ec9]{color:#909399;border:1rpx solid #c0c4cc;background:#f4f4f5}.sj-badge[data-v-3ca66be2]{vertical-align:middle;justify-content:center;align-items:center;display:inline-flex;position:relative}.sj-badge__content[data-v-3ca66be2]{z-index:1;box-sizing:border-box;min-width:32rpx;padding:0 8rpx;color:#fff;font-size:20rpx;font-weight:500;line-height:32rpx;text-align:center;border:2rpx solid #fff;border-radius:999rpx;transform-origin:50%;background:#fa3534;position:absolute}.sj-badge__content--dot[data-v-3ca66be2]{min-width:16rpx;width:16rpx;height:16rpx;border-radius:50%;padding:0}.sj-badge__content--top-right[data-v-3ca66be2]{top:0;right:0}.sj-badge__content--top-left[data-v-3ca66be2]{top:0;left:0}.sj-badge__content--bottom-right[data-v-3ca66be2]{bottom:0;right:0}.sj-badge__content--bottom-left[data-v-3ca66be2]{bottom:0;left:0}.sj-badge__text[data-v-3ca66be2]{display:block;transform:scale(.92)}.sj-space[data-v-1a734be2],view,text,scroll-view,swiper,input,textarea,button,image{box-sizing:border-box}button{line-height:inherit;font-size:inherit;background:0 0;border:none;outline:none;margin:0;padding:0}button:after{display:none}input,textarea{box-sizing:border-box}
2
2
  /*$vite$:1*/