koru-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 +21 -0
- package/README.md +25 -0
- package/dist/logo.svg +28 -0
- package/dist/logo2.svg +40 -0
- package/dist/mollu-ui.es.js +154 -0
- package/dist/mollu-ui.umd.js +1 -0
- package/dist/style.css +1 -0
- package/package.json +74 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 奋进的蜗牛
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="./public/logo.svg" alt="Koru UI Logo" width="200" />
|
|
3
|
+
<img src="./public/logo2.svg" alt="Koru UI Logo" width="200" />
|
|
4
|
+
</p>
|
|
5
|
+
|
|
6
|
+
<h1 align="center">Koru UI</h1>
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 简介
|
|
11
|
+
|
|
12
|
+
Koru UI 是一个基于 Vue 3 和 TypeScript 的现代化组件库,其设计灵感来源于蜗牛的坚韧和稳健。我们相信,如同蜗牛一样,优秀的组件库应该以稳定可靠为核心,逐步前行,为开发者提供坚实的支持。
|
|
13
|
+
|
|
14
|
+
## 安装
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# 使用 npm
|
|
18
|
+
npm install @koru/ui
|
|
19
|
+
|
|
20
|
+
# 使用 yarn
|
|
21
|
+
yarn add @koru/ui
|
|
22
|
+
|
|
23
|
+
# 使用 pnpm
|
|
24
|
+
pnpm add @koru/ui
|
|
25
|
+
```
|
package/dist/logo.svg
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<svg width="200" height="200" viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<!-- 蜗牛身体 -->
|
|
3
|
+
<path d="M100 140 Q120 130 125 110 Q130 90 120 70 Q100 40 80 60 Q70 70 75 90 Q80 110 100 120"
|
|
4
|
+
fill="#4FC08D" stroke="#35495E" stroke-width="2"/>
|
|
5
|
+
|
|
6
|
+
<!-- 蜗牛头部 -->
|
|
7
|
+
<circle cx="120" cy="70" r="12" fill="#4FC08D" stroke="#35495E" stroke-width="2"/>
|
|
8
|
+
|
|
9
|
+
<!-- 蜗牛眼睛 -->
|
|
10
|
+
<circle cx="125" cy="65" r="3" fill="#35495E"/>
|
|
11
|
+
|
|
12
|
+
<!-- 蜗牛触角 -->
|
|
13
|
+
<line x1="118" y1="60" x2="110" y2="45" stroke="#35495E" stroke-width="2"/>
|
|
14
|
+
<line x1="122" y1="60" x2="130" y2="45" stroke="#35495E" stroke-width="2"/>
|
|
15
|
+
|
|
16
|
+
<!-- 蜗牛壳 -->
|
|
17
|
+
<path d="M100 120 C80 110, 70 90, 80 70 C90 50, 110 50, 120 70 C130 90, 120 110, 100 120
|
|
18
|
+
C90 115, 85 105, 90 95 C95 85, 105 85, 110 95 C115 105, 110 115, 100 120"
|
|
19
|
+
fill="#41B883" stroke="#35495E" stroke-width="2"/>
|
|
20
|
+
|
|
21
|
+
<!-- 壳上的纹理 -->
|
|
22
|
+
<path d="M100 100 C95 98, 93 93, 95 88 C97 83, 103 83, 105 88 C107 93, 105 98, 100 100"
|
|
23
|
+
fill="none" stroke="#35495E" stroke-width="1"/>
|
|
24
|
+
|
|
25
|
+
<!-- 蜗牛路径 -->
|
|
26
|
+
<path d="M50 170 C60 160, 70 160, 80 170 C90 180, 110 180, 120 170 C130 160, 140 160, 150 170"
|
|
27
|
+
fill="none" stroke="#C0C0C0" stroke-width="1" stroke-dasharray="4,4"/>
|
|
28
|
+
</svg>
|
package/dist/logo2.svg
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<svg width="200" height="200" viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<!-- 蜗牛身体 -->
|
|
3
|
+
<path d="M60 130
|
|
4
|
+
C40 130 30 110 40 90
|
|
5
|
+
C50 70 70 60 90 60
|
|
6
|
+
C100 60 110 65 110 75
|
|
7
|
+
C110 85 100 95 90 100
|
|
8
|
+
C80 105 70 110 60 110
|
|
9
|
+
C50 110 40 120 40 130
|
|
10
|
+
Z"
|
|
11
|
+
fill="#F7D3B8" stroke="#A06E4E" stroke-width="4" stroke-linecap="round"/>
|
|
12
|
+
|
|
13
|
+
<!-- 蜗牛壳 -->
|
|
14
|
+
<path d="M50 90
|
|
15
|
+
C35 80 30 60 40 45
|
|
16
|
+
C50 30 70 30 85 45
|
|
17
|
+
C100 60 95 80 80 90
|
|
18
|
+
C70 95 60 95 50 90 Z"
|
|
19
|
+
fill="#FFC15A" stroke="#A06E4E" stroke-width="4" stroke-linecap="round"/>
|
|
20
|
+
|
|
21
|
+
<!-- 壳内螺旋线 -->
|
|
22
|
+
<path d="M55 85
|
|
23
|
+
C50 80 48 70 50 65
|
|
24
|
+
C52 60 60 60 65 65
|
|
25
|
+
C70 70 70 75 65 80
|
|
26
|
+
C60 85 55 85 55 85 Z"
|
|
27
|
+
fill="none" stroke="#A06E4E" stroke-width="2"/>
|
|
28
|
+
|
|
29
|
+
<!-- 触角 -->
|
|
30
|
+
<line x1="100" y1="60" x2="105" y2="40" stroke="#A06E4E" stroke-width="4"/>
|
|
31
|
+
<line x1="110" y1="60" x2="115" y2="40" stroke="#A06E4E" stroke-width="4"/>
|
|
32
|
+
|
|
33
|
+
<!-- 触角顶端(眼睛) -->
|
|
34
|
+
<circle cx="105" cy="40" r="8" fill="#A06E4E"/>
|
|
35
|
+
<circle cx="115" cy="40" r="8" fill="#A06E4E"/>
|
|
36
|
+
|
|
37
|
+
<!-- 身体上的弧线(装饰) -->
|
|
38
|
+
<path d="M100 80 Q105 75 105 70 Q105 65 100 65"
|
|
39
|
+
fill="none" stroke="#A06E4E" stroke-width="2"/>
|
|
40
|
+
</svg>
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { defineComponent as r, openBlock as s, createElementBlock as l, normalizeClass as m, createCommentVNode as u, renderSlot as c, createElementVNode as i, toDisplayString as v, ref as y, normalizeStyle as _ } from "vue";
|
|
2
|
+
const b = ["disabled"], w = {
|
|
3
|
+
key: 0,
|
|
4
|
+
class: "m-btn__loading-spinner"
|
|
5
|
+
}, g = {
|
|
6
|
+
key: 1,
|
|
7
|
+
class: "m-btn__icon"
|
|
8
|
+
}, $ = ["innerHTML"], k = { class: "m-btn__text" }, x = /* @__PURE__ */ r({
|
|
9
|
+
__name: "index",
|
|
10
|
+
props: {
|
|
11
|
+
type: { default: "default" },
|
|
12
|
+
size: { default: "medium" },
|
|
13
|
+
disabled: { type: Boolean, default: !1 },
|
|
14
|
+
loading: { type: Boolean, default: !1 },
|
|
15
|
+
icon: {}
|
|
16
|
+
},
|
|
17
|
+
emits: ["click"],
|
|
18
|
+
setup(e, { emit: n }) {
|
|
19
|
+
const t = e, d = n, o = (a) => {
|
|
20
|
+
!t.disabled && !t.loading && d("click", a);
|
|
21
|
+
};
|
|
22
|
+
return (a, f) => (s(), l("button", {
|
|
23
|
+
class: m([
|
|
24
|
+
"m-btn",
|
|
25
|
+
`m-btn--${e.type}`,
|
|
26
|
+
`m-btn--${e.size}`,
|
|
27
|
+
{
|
|
28
|
+
"m-btn--disabled": e.disabled,
|
|
29
|
+
"m-btn--loading": e.loading
|
|
30
|
+
}
|
|
31
|
+
]),
|
|
32
|
+
disabled: e.disabled || e.loading,
|
|
33
|
+
onClick: o
|
|
34
|
+
}, [
|
|
35
|
+
e.loading ? (s(), l("span", w)) : u("", !0),
|
|
36
|
+
a.$slots.icon || e.icon ? (s(), l("span", g, [
|
|
37
|
+
c(a.$slots, "icon", {}, () => [
|
|
38
|
+
i("span", { innerHTML: e.icon }, null, 8, $)
|
|
39
|
+
], !0)
|
|
40
|
+
])) : u("", !0),
|
|
41
|
+
i("span", k, [
|
|
42
|
+
c(a.$slots, "default", {}, void 0, !0)
|
|
43
|
+
])
|
|
44
|
+
], 10, b));
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
const h = (e, n) => {
|
|
48
|
+
const t = e.__vccOpts || e;
|
|
49
|
+
for (const [d, o] of n)
|
|
50
|
+
t[d] = o;
|
|
51
|
+
return t;
|
|
52
|
+
}, M = /* @__PURE__ */ h(x, [["__scopeId", "data-v-1a2c5926"]]), B = { class: "m-switch__core" }, C = { class: "m-switch__action" }, V = {
|
|
53
|
+
key: 0,
|
|
54
|
+
class: "m-switch__loading"
|
|
55
|
+
}, T = {
|
|
56
|
+
key: 1,
|
|
57
|
+
class: "m-switch__inner"
|
|
58
|
+
}, S = /* @__PURE__ */ r({
|
|
59
|
+
__name: "index",
|
|
60
|
+
props: {
|
|
61
|
+
modelValue: { type: Boolean },
|
|
62
|
+
disabled: { type: Boolean, default: !1 },
|
|
63
|
+
loading: { type: Boolean, default: !1 },
|
|
64
|
+
activeText: { default: "" },
|
|
65
|
+
inactiveText: { default: "" },
|
|
66
|
+
activeColor: { default: "#409eff" },
|
|
67
|
+
inactiveColor: { default: "#dcdfe6" },
|
|
68
|
+
width: { default: 40 }
|
|
69
|
+
},
|
|
70
|
+
emits: ["update:modelValue", "change"],
|
|
71
|
+
setup(e, { emit: n }) {
|
|
72
|
+
const t = e, d = n, o = () => {
|
|
73
|
+
if (t.disabled || t.loading)
|
|
74
|
+
return;
|
|
75
|
+
const a = !t.modelValue;
|
|
76
|
+
d("update:modelValue", a), d("change", a);
|
|
77
|
+
};
|
|
78
|
+
return (a, f) => (s(), l("div", {
|
|
79
|
+
class: m(["m-switch", {
|
|
80
|
+
"m-switch--checked": e.modelValue,
|
|
81
|
+
"m-switch--disabled": e.disabled,
|
|
82
|
+
"m-switch--loading": e.loading
|
|
83
|
+
}]),
|
|
84
|
+
onClick: o
|
|
85
|
+
}, [
|
|
86
|
+
i("div", B, [
|
|
87
|
+
i("div", C, [
|
|
88
|
+
e.loading ? (s(), l("span", V)) : (s(), l("span", T, v(e.modelValue ? e.activeText : e.inactiveText), 1))
|
|
89
|
+
])
|
|
90
|
+
])
|
|
91
|
+
], 2));
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
const H = /* @__PURE__ */ h(S, [["__scopeId", "data-v-05179423"]]), L = {
|
|
95
|
+
key: 0,
|
|
96
|
+
class: "m-card__header"
|
|
97
|
+
}, z = ["innerHTML"], E = /* @__PURE__ */ r({
|
|
98
|
+
__name: "index",
|
|
99
|
+
props: {
|
|
100
|
+
header: {},
|
|
101
|
+
bodyStyle: {},
|
|
102
|
+
width: { default: "100%" },
|
|
103
|
+
shadow: { default: "always" },
|
|
104
|
+
border: { type: Boolean, default: !0 }
|
|
105
|
+
},
|
|
106
|
+
setup(e) {
|
|
107
|
+
const n = e, t = y(!1), d = () => {
|
|
108
|
+
n.shadow === "hover" && (t.value = !0);
|
|
109
|
+
}, o = () => {
|
|
110
|
+
t.value = !1;
|
|
111
|
+
};
|
|
112
|
+
return (a, f) => (s(), l("div", {
|
|
113
|
+
class: m(["m-card", {
|
|
114
|
+
"m-card--shadow": e.shadow === "always" || e.shadow === "hover" && t.value,
|
|
115
|
+
"m-card--bordered": e.border
|
|
116
|
+
}]),
|
|
117
|
+
style: _({ width: typeof e.width == "number" ? e.width + "px" : e.width }),
|
|
118
|
+
onMouseenter: d,
|
|
119
|
+
onMouseleave: o
|
|
120
|
+
}, [
|
|
121
|
+
a.$slots.header || e.header ? (s(), l("div", L, [
|
|
122
|
+
c(a.$slots, "header", {}, () => [
|
|
123
|
+
i("div", {
|
|
124
|
+
class: "m-card__header-content",
|
|
125
|
+
innerHTML: e.header
|
|
126
|
+
}, null, 8, z)
|
|
127
|
+
], !0)
|
|
128
|
+
])) : u("", !0),
|
|
129
|
+
i("div", {
|
|
130
|
+
class: "m-card__body",
|
|
131
|
+
style: _(e.bodyStyle)
|
|
132
|
+
}, [
|
|
133
|
+
c(a.$slots, "default", {}, void 0, !0)
|
|
134
|
+
], 4)
|
|
135
|
+
], 38));
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
const I = /* @__PURE__ */ h(E, [["__scopeId", "data-v-f3a09677"]]), N = [
|
|
139
|
+
M,
|
|
140
|
+
H,
|
|
141
|
+
I
|
|
142
|
+
], p = (e) => {
|
|
143
|
+
N.forEach((n) => {
|
|
144
|
+
e.component(n.name || n.displayName, n);
|
|
145
|
+
});
|
|
146
|
+
}, O = {
|
|
147
|
+
install: p
|
|
148
|
+
};
|
|
149
|
+
export {
|
|
150
|
+
M as MButton,
|
|
151
|
+
I as MCard,
|
|
152
|
+
H as MSwitch,
|
|
153
|
+
O as default
|
|
154
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(function(l,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(l=typeof globalThis<"u"?globalThis:l||self,e(l["mollu-ui"]={},l.Vue))})(this,function(l,e){"use strict";const h=["disabled"],u={key:0,class:"m-btn__loading-spinner"},_={key:1,class:"m-btn__icon"},y=["innerHTML"],b={class:"m-btn__text"},k=e.defineComponent({__name:"index",props:{type:{default:"default"},size:{default:"medium"},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},icon:{}},emits:["click"],setup(t,{emit:a}){const n=t,d=a,s=o=>{!n.disabled&&!n.loading&&d("click",o)};return(o,f)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["m-btn",`m-btn--${t.type}`,`m-btn--${t.size}`,{"m-btn--disabled":t.disabled,"m-btn--loading":t.loading}]),disabled:t.disabled||t.loading,onClick:s},[t.loading?(e.openBlock(),e.createElementBlock("span",u)):e.createCommentVNode("",!0),o.$slots.icon||t.icon?(e.openBlock(),e.createElementBlock("span",_,[e.renderSlot(o.$slots,"icon",{},()=>[e.createElementVNode("span",{innerHTML:t.icon},null,8,y)],!0)])):e.createCommentVNode("",!0),e.createElementVNode("span",b,[e.renderSlot(o.$slots,"default",{},void 0,!0)])],10,h))}}),x="",c=(t,a)=>{const n=t.__vccOpts||t;for(const[d,s]of a)n[d]=s;return n},i=c(k,[["__scopeId","data-v-1a2c5926"]]),w={class:"m-switch__core"},B={class:"m-switch__action"},g={key:0,class:"m-switch__loading"},M={key:1,class:"m-switch__inner"},V=e.defineComponent({__name:"index",props:{modelValue:{type:Boolean},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},activeText:{default:""},inactiveText:{default:""},activeColor:{default:"#409eff"},inactiveColor:{default:"#dcdfe6"},width:{default:40}},emits:["update:modelValue","change"],setup(t,{emit:a}){const n=t,d=a,s=()=>{if(n.disabled||n.loading)return;const o=!n.modelValue;d("update:modelValue",o),d("change",o)};return(o,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["m-switch",{"m-switch--checked":t.modelValue,"m-switch--disabled":t.disabled,"m-switch--loading":t.loading}]),onClick:s},[e.createElementVNode("div",w,[e.createElementVNode("div",B,[t.loading?(e.openBlock(),e.createElementBlock("span",g)):(e.openBlock(),e.createElementBlock("span",M,e.toDisplayString(t.modelValue?t.activeText:t.inactiveText),1))])])],2))}}),T="",r=c(V,[["__scopeId","data-v-05179423"]]),C={key:0,class:"m-card__header"},E=["innerHTML"],$=e.defineComponent({__name:"index",props:{header:{},bodyStyle:{},width:{default:"100%"},shadow:{default:"always"},border:{type:Boolean,default:!0}},setup(t){const a=t,n=e.ref(!1),d=()=>{a.shadow==="hover"&&(n.value=!0)},s=()=>{n.value=!1};return(o,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["m-card",{"m-card--shadow":t.shadow==="always"||t.shadow==="hover"&&n.value,"m-card--bordered":t.border}]),style:e.normalizeStyle({width:typeof t.width=="number"?t.width+"px":t.width}),onMouseenter:d,onMouseleave:s},[o.$slots.header||t.header?(e.openBlock(),e.createElementBlock("div",C,[e.renderSlot(o.$slots,"header",{},()=>[e.createElementVNode("div",{class:"m-card__header-content",innerHTML:t.header},null,8,E)],!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"m-card__body",style:e.normalizeStyle(t.bodyStyle)},[e.renderSlot(o.$slots,"default",{},void 0,!0)],4)],38))}}),N="",m=c($,[["__scopeId","data-v-f3a09677"]]),S=[i,r,m],p={install:t=>{S.forEach(a=>{t.component(a.name||a.displayName,a)})}};l.MButton=i,l.MCard=m,l.MSwitch=r,l.default=p,Object.defineProperties(l,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
package/dist/style.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.m-btn[data-v-1a2c5926]{position:relative;display:inline-flex;align-items:center;justify-content:center;line-height:1;white-space:nowrap;cursor:pointer;color:#606266;-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:none;margin:0;transition:.1s;font-weight:500;user-select:none;vertical-align:middle;-webkit-user-select:none;padding:12px 20px;font-size:14px;border-radius:4px;border:1px solid #dcdfe6;background-color:#fff}.m-btn--primary[data-v-1a2c5926]{color:#fff;background-color:#409eff;border-color:#409eff}.m-btn--success[data-v-1a2c5926]{color:#fff;background-color:#67c23a;border-color:#67c23a}.m-btn--warning[data-v-1a2c5926]{color:#fff;background-color:#e6a23c;border-color:#e6a23c}.m-btn--danger[data-v-1a2c5926]{color:#fff;background-color:#f56c6c;border-color:#f56c6c}.m-btn--small[data-v-1a2c5926]{padding:7px 15px;font-size:12px;border-radius:3px}.m-btn--medium[data-v-1a2c5926]{padding:9px 15px;font-size:14px;border-radius:4px}.m-btn--large[data-v-1a2c5926]{padding:11px 19px;font-size:16px;border-radius:6px}.m-btn--disabled[data-v-1a2c5926]{opacity:.5;cursor:not-allowed}.m-btn__icon[data-v-1a2c5926]{margin-right:5px}.m-btn__loading-spinner[data-v-1a2c5926]{margin-right:5px;width:1em;height:1em;border:2px solid transparent;border-top:2px solid currentColor;border-radius:50%;animation:rotate-1a2c5926 1s linear infinite}@keyframes rotate-1a2c5926{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.m-switch[data-v-05179423]{position:relative;display:inline-flex;align-items:center;width:var(--switch-width, 40px);height:var(--switch-height, 20px);border-radius:var(--switch-height, 20px);box-sizing:border-box;cursor:pointer;transition:border-color .3s,background-color .3s;background-color:#dcdfe6;border:1px solid #dcdfe6}.m-switch__core[data-v-05179423]{position:relative;width:100%;height:100%;overflow:hidden;border-radius:var(--switch-height, 20px)}.m-switch__action[data-v-05179423]{position:absolute;top:0;left:0;width:calc(var(--switch-width, 40px) - var(--switch-height, 20px));height:calc(var(--switch-height, 20px) - 2px);margin:1px;transition:all .3s;border-radius:calc(var(--switch-height, 20px) / 2);background-color:#fff;display:flex;align-items:center;justify-content:center}.m-switch--checked[data-v-05179423]{background-color:var(--switch-active-color, #409eff);border-color:var(--switch-active-color, #409eff)}.m-switch--checked .m-switch__action[data-v-05179423]{transform:translate(calc(var(--switch-width, 40px) - var(--switch-height, 20px)))}.m-switch__inner[data-v-05179423]{font-size:12px;color:#fff;transition:margin .3s}.m-switch--checked .m-switch__inner[data-v-05179423]{margin-left:6px}.m-switch--unchecked .m-switch__inner[data-v-05179423]{margin-right:6px}.m-switch__loading[data-v-05179423]{width:12px;height:12px;border:2px solid transparent;border-top:2px solid currentColor;border-radius:50%;animation:rotate-05179423 1s linear infinite}.m-switch--disabled[data-v-05179423]{opacity:.6;cursor:not-allowed}@keyframes rotate-05179423{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.m-card[data-v-f3a09677]{border:1px solid #ebeef5;background-color:#fff;color:#303133;transition:.3s;border-radius:6px;overflow:hidden}.m-card--bordered[data-v-f3a09677]{border:1px solid #ebeef5}.m-card--shadow[data-v-f3a09677]{box-shadow:0 2px 12px #0000001a}.m-card__header[data-v-f3a09677]{padding:18px 20px;border-bottom:1px solid #ebeef5;box-sizing:border-box;font-size:16px;font-weight:500;color:#303133;background-color:#fafafa}.m-card__body[data-v-f3a09677]{padding:20px}.m-card--no-header .m-card__body[data-v-f3a09677]{padding-top:20px}
|
package/package.json
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "koru-ui",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "A Vue component library inspired by the persistence of a snail",
|
|
5
|
+
"main": "dist/koru-ui.cjs.js",
|
|
6
|
+
"module": "dist/koru-ui.es.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/koru-ui.es.js",
|
|
11
|
+
"require": "./dist/koru-ui.cjs.js",
|
|
12
|
+
"types": "./dist/index.d.ts"
|
|
13
|
+
},
|
|
14
|
+
"./dist/style.css": "./dist/style.css"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist"
|
|
18
|
+
],
|
|
19
|
+
"keywords": [
|
|
20
|
+
"vue3",
|
|
21
|
+
"typescript",
|
|
22
|
+
"unocss",
|
|
23
|
+
"koru-ui",
|
|
24
|
+
"component-library",
|
|
25
|
+
"ui-components"
|
|
26
|
+
],
|
|
27
|
+
"author": "Mollu UI Team",
|
|
28
|
+
"license": "MIT",
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "https://github.com/kairolin/koru-ui.git"
|
|
32
|
+
},
|
|
33
|
+
"bugs": {
|
|
34
|
+
"url": "https://github.com/kairolin/koru-ui/issues"
|
|
35
|
+
},
|
|
36
|
+
"homepage": "https://github.com/kairolin/koru-ui#readme",
|
|
37
|
+
"peerDependencies": {
|
|
38
|
+
"vue": "^3.2.0"
|
|
39
|
+
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@vue/shared": "^3.2.0"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@vitejs/plugin-vue": "^4.0.0",
|
|
45
|
+
"typescript": "^4.9.0",
|
|
46
|
+
"vite": "^4.1.0",
|
|
47
|
+
"vitepress": "^1.0.0-alpha.45",
|
|
48
|
+
"vue": "^3.2.0",
|
|
49
|
+
"vue-tsc": "^1.0.0",
|
|
50
|
+
"@unocss/core": "^0.50.0",
|
|
51
|
+
"@unocss/preset-attributify": "^0.50.0",
|
|
52
|
+
"@unocss/preset-uno": "^0.50.0",
|
|
53
|
+
"@unocss/reset": "^0.50.0",
|
|
54
|
+
"unocss": "^0.50.0",
|
|
55
|
+
"@types/node": "^18.14.0",
|
|
56
|
+
"@typescript-eslint/eslint-plugin": "^5.54.0",
|
|
57
|
+
"@typescript-eslint/parser": "^5.54.0",
|
|
58
|
+
"eslint": "^8.35.0",
|
|
59
|
+
"eslint-plugin-vue": "^9.9.0",
|
|
60
|
+
"@vue/eslint-config-typescript": "^11.0.0"
|
|
61
|
+
},
|
|
62
|
+
"scripts": {
|
|
63
|
+
"dev": "vite",
|
|
64
|
+
"build": "npx vue-tsc && vite build",
|
|
65
|
+
"preview": "vite preview",
|
|
66
|
+
"docs:dev": "vitepress dev docs",
|
|
67
|
+
"docs:build": "vitepress build docs",
|
|
68
|
+
"docs:preview": "vitepress preview docs",
|
|
69
|
+
"build:components": "vite build --config vite.components.config.ts",
|
|
70
|
+
"type-check": "npx vue-tsc --noEmit",
|
|
71
|
+
"lint": "eslint . --ext .vue,.ts,.tsx",
|
|
72
|
+
"lint:fix": "eslint . --ext .vue,.ts,.tsx --fix"
|
|
73
|
+
}
|
|
74
|
+
}
|