dishui 0.0.66 → 0.0.67
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/dist/components/Accordion/index.d.ts +39 -0
- package/dist/components/Accordion/index.js +70 -0
- package/dist/components/Accordion/index.js.map +1 -0
- package/dist/components/Avatar/index.d.ts +48 -0
- package/dist/components/Avatar/index.js +71 -0
- package/dist/components/Avatar/index.js.map +1 -0
- package/dist/components/Card/index.d.ts +66 -0
- package/dist/components/Card/index.js +193 -3
- package/dist/components/Card/index.js.map +1 -1
- package/dist/components/Icon/index.d.ts +3 -1
- package/dist/components/Icon/index.js +9 -8
- package/dist/components/Icon/index.js.map +1 -1
- package/dist/components/Page/index.d.ts +1 -1
- package/dist/components/Page/index.js.map +1 -1
- package/dist/dishui.css +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.js +95 -94
- package/dist/utils/i18n.js +18 -8
- package/dist/utils/i18n.js.map +1 -1
- package/package.json +1 -1
- package/dist/components/StatCard/index.d.ts +0 -52
- package/dist/components/StatCard/index.js +0 -193
- package/dist/components/StatCard/index.js.map +0 -1
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
import { cn as e } from "../../utils/cn.js";
|
|
2
|
-
import t from "../Card/index.js";
|
|
3
|
-
import "react";
|
|
4
|
-
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
5
|
-
//#region src/components/StatCard/index.tsx
|
|
6
|
-
var i = {
|
|
7
|
-
primary: {
|
|
8
|
-
text: "text-primary",
|
|
9
|
-
bg: "bg-primary/10"
|
|
10
|
-
},
|
|
11
|
-
success: {
|
|
12
|
-
text: "text-success",
|
|
13
|
-
bg: "bg-success/10"
|
|
14
|
-
},
|
|
15
|
-
warning: {
|
|
16
|
-
text: "text-warning",
|
|
17
|
-
bg: "bg-warning/10"
|
|
18
|
-
},
|
|
19
|
-
info: {
|
|
20
|
-
text: "text-info",
|
|
21
|
-
bg: "bg-info/10"
|
|
22
|
-
},
|
|
23
|
-
error: {
|
|
24
|
-
text: "text-error",
|
|
25
|
-
bg: "bg-error/10"
|
|
26
|
-
},
|
|
27
|
-
neutral: {
|
|
28
|
-
text: "text-base-content/70",
|
|
29
|
-
bg: "bg-base-content/5"
|
|
30
|
-
}
|
|
31
|
-
}, a = {
|
|
32
|
-
primary: "bg-primary text-primary-content",
|
|
33
|
-
success: "bg-success text-success-content",
|
|
34
|
-
warning: "bg-warning text-warning-content",
|
|
35
|
-
info: "bg-info text-info-content",
|
|
36
|
-
error: "bg-error text-error-content",
|
|
37
|
-
neutral: "bg-neutral text-neutral-content"
|
|
38
|
-
}, o = {
|
|
39
|
-
md: "text-2xl",
|
|
40
|
-
lg: "text-4xl",
|
|
41
|
-
xl: "text-5xl",
|
|
42
|
-
"2xl": "text-6xl"
|
|
43
|
-
}, s = (e) => e === "neutral" ? "var(--color-base-content)" : `var(--color-${e})`, c = ({ data: e, type: t, height: i }) => {
|
|
44
|
-
if (!e || e.length < 2) return null;
|
|
45
|
-
let a = Math.min(...e), o = Math.max(...e) - a || 1, s = (t) => t / (e.length - 1) * 100, c = (e) => i - 3 - (e - a) / o * (i - 6), l = e.map((e, t) => `${s(t).toFixed(2)},${c(e).toFixed(2)}`);
|
|
46
|
-
if (t === "bar") {
|
|
47
|
-
let t = 100 / e.length;
|
|
48
|
-
return /* @__PURE__ */ n("svg", {
|
|
49
|
-
viewBox: `0 0 100 ${i}`,
|
|
50
|
-
preserveAspectRatio: "none",
|
|
51
|
-
className: "block w-full",
|
|
52
|
-
style: { height: i },
|
|
53
|
-
"aria-hidden": "true",
|
|
54
|
-
children: e.map((e, r) => /* @__PURE__ */ n("rect", {
|
|
55
|
-
x: s(r) - t / 2,
|
|
56
|
-
y: c(e),
|
|
57
|
-
width: t * .8,
|
|
58
|
-
height: Math.max(1, i - 3 - c(e)),
|
|
59
|
-
fill: "currentColor"
|
|
60
|
-
}, r))
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
return t === "area" ? /* @__PURE__ */ r("svg", {
|
|
64
|
-
viewBox: `0 0 100 ${i}`,
|
|
65
|
-
preserveAspectRatio: "none",
|
|
66
|
-
className: "block w-full",
|
|
67
|
-
style: { height: i },
|
|
68
|
-
"aria-hidden": "true",
|
|
69
|
-
children: [/* @__PURE__ */ n("path", {
|
|
70
|
-
d: `M0,${i} L${l.join(" L")} L100,${i} Z`,
|
|
71
|
-
fill: "currentColor",
|
|
72
|
-
opacity: .18
|
|
73
|
-
}), /* @__PURE__ */ n("polyline", {
|
|
74
|
-
points: l.join(" "),
|
|
75
|
-
fill: "none",
|
|
76
|
-
stroke: "currentColor",
|
|
77
|
-
strokeWidth: 1.5,
|
|
78
|
-
vectorEffect: "non-scaling-stroke"
|
|
79
|
-
})]
|
|
80
|
-
}) : /* @__PURE__ */ n("svg", {
|
|
81
|
-
viewBox: `0 0 100 ${i}`,
|
|
82
|
-
preserveAspectRatio: "none",
|
|
83
|
-
className: "block w-full",
|
|
84
|
-
style: { height: i },
|
|
85
|
-
"aria-hidden": "true",
|
|
86
|
-
children: /* @__PURE__ */ n("polyline", {
|
|
87
|
-
points: l.join(" "),
|
|
88
|
-
fill: "none",
|
|
89
|
-
stroke: "currentColor",
|
|
90
|
-
strokeWidth: 1.5,
|
|
91
|
-
vectorEffect: "non-scaling-stroke"
|
|
92
|
-
})
|
|
93
|
-
});
|
|
94
|
-
}, l = ({ label: l, value: u, icon: d, iconPosition: f = "top", tone: p = "primary", hint: m, loading: h = !1, className: g = "", panel: _ = !1, unit: v, valueSize: y = "xl", align: b = "left", sparkline: x, sparklineData: S, sparklineType: C = "line", sparklineHeight: w = 36, indicator: T = !1, filled: E = !1, onClick: D }) => {
|
|
95
|
-
let O = i[p];
|
|
96
|
-
if (_) {
|
|
97
|
-
let t = x ?? (S && S.length >= 2 ? /* @__PURE__ */ n(c, {
|
|
98
|
-
data: S,
|
|
99
|
-
type: C,
|
|
100
|
-
height: w
|
|
101
|
-
}) : null), i = E ? "" : O.text, d = E ? "opacity-80" : "text-base-content/60";
|
|
102
|
-
return /* @__PURE__ */ r("div", {
|
|
103
|
-
onClick: D,
|
|
104
|
-
className: e("relative flex flex-col overflow-hidden rounded-lg p-3", E ? a[p] : "border border-base-300/60 bg-base-200", D && "cursor-pointer transition-colors hover:border-primary/40", g),
|
|
105
|
-
children: [
|
|
106
|
-
T && !E && /* @__PURE__ */ n("span", {
|
|
107
|
-
"aria-hidden": "true",
|
|
108
|
-
className: "absolute right-0 top-0 h-0 w-0",
|
|
109
|
-
style: {
|
|
110
|
-
borderTop: "14px solid " + s(p),
|
|
111
|
-
borderLeft: "14px solid transparent"
|
|
112
|
-
}
|
|
113
|
-
}),
|
|
114
|
-
/* @__PURE__ */ n("div", {
|
|
115
|
-
className: e("truncate text-xs font-medium", d, b === "center" && "text-center"),
|
|
116
|
-
children: l
|
|
117
|
-
}),
|
|
118
|
-
/* @__PURE__ */ n("div", {
|
|
119
|
-
className: e("flex min-h-[3rem] flex-1 items-center py-1", b === "center" ? "justify-center" : "justify-start"),
|
|
120
|
-
children: h ? /* @__PURE__ */ n("span", { className: e("inline-block h-8 w-16 animate-pulse rounded", E ? "bg-white/25" : "bg-base-content/10") }) : /* @__PURE__ */ r("span", {
|
|
121
|
-
className: e("leading-none tracking-tight", o[y], "font-semibold", E ? "" : i),
|
|
122
|
-
children: [u, v != null && v !== "" && /* @__PURE__ */ n("span", {
|
|
123
|
-
className: "ml-0.5 text-[0.45em] font-semibold",
|
|
124
|
-
children: v
|
|
125
|
-
})]
|
|
126
|
-
})
|
|
127
|
-
}),
|
|
128
|
-
t && /* @__PURE__ */ n("div", {
|
|
129
|
-
className: e("-mx-3 -mb-3 mt-1", E ? "text-white" : O.text),
|
|
130
|
-
children: t
|
|
131
|
-
})
|
|
132
|
-
]
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
return f === "left" ? /* @__PURE__ */ n(t, {
|
|
136
|
-
bordered: !0,
|
|
137
|
-
glass: !1,
|
|
138
|
-
hover: !0,
|
|
139
|
-
className: `bg-base-200 p-4 ${g}`.trim(),
|
|
140
|
-
children: /* @__PURE__ */ r("div", {
|
|
141
|
-
className: "flex items-center gap-3",
|
|
142
|
-
children: [d && /* @__PURE__ */ n("span", {
|
|
143
|
-
className: `flex shrink-0 items-center justify-center rounded-lg p-2.5 ${O.bg} [&>svg]:h-5 [&>svg]:w-5 ${O.text}`.trim(),
|
|
144
|
-
children: d
|
|
145
|
-
}), /* @__PURE__ */ r("div", {
|
|
146
|
-
className: "min-w-0 flex-1",
|
|
147
|
-
children: [
|
|
148
|
-
/* @__PURE__ */ n("span", {
|
|
149
|
-
className: "block truncate text-xs font-medium text-base-content/60",
|
|
150
|
-
children: l
|
|
151
|
-
}),
|
|
152
|
-
h ? /* @__PURE__ */ n("div", { className: "mt-1 h-6 w-14 animate-pulse rounded bg-base-content/10" }) : /* @__PURE__ */ n("p", {
|
|
153
|
-
className: "truncate text-xl font-bold leading-tight text-base-content",
|
|
154
|
-
children: u
|
|
155
|
-
}),
|
|
156
|
-
m && /* @__PURE__ */ n("p", {
|
|
157
|
-
className: "mt-0.5 truncate text-[11px] text-base-content/50",
|
|
158
|
-
children: m
|
|
159
|
-
})
|
|
160
|
-
]
|
|
161
|
-
})]
|
|
162
|
-
})
|
|
163
|
-
}) : /* @__PURE__ */ r(t, {
|
|
164
|
-
bordered: !0,
|
|
165
|
-
glass: !1,
|
|
166
|
-
hover: !0,
|
|
167
|
-
className: `bg-base-200 p-4 ${g}`.trim(),
|
|
168
|
-
children: [
|
|
169
|
-
/* @__PURE__ */ r("div", {
|
|
170
|
-
className: "mb-2 flex items-center justify-between gap-2",
|
|
171
|
-
children: [/* @__PURE__ */ n("span", {
|
|
172
|
-
className: "truncate text-xs font-medium text-base-content/60",
|
|
173
|
-
children: l
|
|
174
|
-
}), d && /* @__PURE__ */ n("span", {
|
|
175
|
-
className: `rounded-md p-1.5 ${O.bg} [&>svg]:h-4 [&>svg]:w-4 ${O.text}`.trim(),
|
|
176
|
-
children: d
|
|
177
|
-
})]
|
|
178
|
-
}),
|
|
179
|
-
h ? /* @__PURE__ */ n("div", { className: "h-7 w-14 animate-pulse rounded bg-base-content/10" }) : /* @__PURE__ */ n("p", {
|
|
180
|
-
className: "text-2xl font-bold leading-none text-base-content",
|
|
181
|
-
children: u
|
|
182
|
-
}),
|
|
183
|
-
m && /* @__PURE__ */ n("p", {
|
|
184
|
-
className: "mt-1.5 text-[11px] text-base-content/50",
|
|
185
|
-
children: m
|
|
186
|
-
})
|
|
187
|
-
]
|
|
188
|
-
});
|
|
189
|
-
};
|
|
190
|
-
//#endregion
|
|
191
|
-
export { l as default };
|
|
192
|
-
|
|
193
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/StatCard/index.tsx"],"sourcesContent":["import React from 'react';\nimport Card from '../Card';\nimport { cn } from '../../utils/cn';\n\nexport type StatCardProps = {\n /** 指标名称 */\n label: React.ReactNode;\n /** 指标值(数字或短文本) */\n value: React.ReactNode;\n /** 右上角图标 */\n icon?: React.ReactNode;\n /** 图标位置:`top`(默认,图标在右上角)/ `left`(图标在左,文字居右) */\n iconPosition?: 'top' | 'left';\n /** 色调(影响图标底色与文字色) */\n tone?: 'primary' | 'success' | 'warning' | 'info' | 'error' | 'neutral';\n /** 值下方的小字说明 */\n hint?: React.ReactNode;\n /** 加载态:值显示为骨架 */\n loading?: boolean;\n className?: string;\n\n // ─── Grafana 风格统计面板(panel 模式)────────────────────────\n /**\n * 启用统计面板样式:标签在上、超大数值居中、可选迷你图与角标三角,\n * 对应 Grafana 的 stat panel 外观。\n */\n panel?: boolean;\n /** 数值单位后缀(如 `K`、`%`),以小号字体渲染在数值右侧。 */\n unit?: React.ReactNode;\n /** 面板数值字号(panel 模式),默认 `xl`。 */\n valueSize?: 'md' | 'lg' | 'xl' | '2xl';\n /** 面板内容对齐(panel 模式),默认 `left`。 */\n align?: 'left' | 'center';\n /** 直接传入迷你图节点(优先于 sparklineData)。 */\n sparkline?: React.ReactNode;\n /** 迷你图数据:传入数值数组后自动渲染 sparkline。 */\n sparklineData?: number[];\n /** 迷你图类型:折线 / 面积 / 柱状。 */\n sparklineType?: 'line' | 'area' | 'bar';\n /** 迷你图高度(px)。 */\n sparklineHeight?: number;\n /** 右上角状态三角(Grafana 阈值指示)。 */\n indicator?: boolean;\n /** 整卡填充 tone 底色、文字用对应 content 色(图 RabbitMQ 风格)。 */\n filled?: boolean;\n /** 点击回调(面板常用于跳转详情)。 */\n onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;\n};\n\nconst TONE_CLASS: Record<NonNullable<StatCardProps['tone']>, { text: string; bg: string }> = {\n primary: { text: 'text-primary', bg: 'bg-primary/10' },\n success: { text: 'text-success', bg: 'bg-success/10' },\n warning: { text: 'text-warning', bg: 'bg-warning/10' },\n info: { text: 'text-info', bg: 'bg-info/10' },\n error: { text: 'text-error', bg: 'bg-error/10' },\n neutral: { text: 'text-base-content/70', bg: 'bg-base-content/5' },\n};\n\n/** panel 填充模式:整卡 tone 底色 + 对应 content 文字色 */\nconst FILLED_CLASS: Record<NonNullable<StatCardProps['tone']>, string> = {\n primary: 'bg-primary text-primary-content',\n success: 'bg-success text-success-content',\n warning: 'bg-warning text-warning-content',\n info: 'bg-info text-info-content',\n error: 'bg-error text-error-content',\n neutral: 'bg-neutral text-neutral-content',\n};\n\nconst VALUE_SIZE_CLASS: Record<NonNullable<StatCardProps['valueSize']> & string, string> = {\n md: 'text-2xl',\n lg: 'text-4xl',\n xl: 'text-5xl',\n '2xl': 'text-6xl',\n};\n\nconst cssVarColor = (tone: NonNullable<StatCardProps['tone']>) =>\n tone === 'neutral' ? 'var(--color-base-content)' : `var(--color-${tone})`;\n\n/** 由数值数组生成迷你图(viewBox 拉伸铺满,描边不随宽度变形) */\nconst MiniSparkline: React.FC<{\n data: number[];\n type: 'line' | 'area' | 'bar';\n height: number;\n}> = ({ data, type, height }) => {\n if (!data || data.length < 2) return null;\n const w = 100;\n const pad = 3;\n const min = Math.min(...data);\n const max = Math.max(...data);\n const range = max - min || 1;\n const px = (i: number) => (i / (data.length - 1)) * w;\n const py = (v: number) => height - pad - ((v - min) / range) * (height - pad * 2);\n const points = data.map((v, i) => `${px(i).toFixed(2)},${py(v).toFixed(2)}`);\n\n if (type === 'bar') {\n const bw = w / data.length;\n return (\n <svg\n viewBox={`0 0 ${w} ${height}`}\n preserveAspectRatio=\"none\"\n className=\"block w-full\"\n style={{ height }}\n aria-hidden=\"true\"\n >\n {data.map((v, i) => (\n <rect\n key={i}\n x={px(i) - bw / 2}\n y={py(v)}\n width={bw * 0.8}\n height={Math.max(1, height - pad - py(v))}\n fill=\"currentColor\"\n />\n ))}\n </svg>\n );\n }\n\n if (type === 'area') {\n return (\n <svg\n viewBox={`0 0 ${w} ${height}`}\n preserveAspectRatio=\"none\"\n className=\"block w-full\"\n style={{ height }}\n aria-hidden=\"true\"\n >\n <path\n d={`M0,${height} L${points.join(' L')} L${w},${height} Z`}\n fill=\"currentColor\"\n opacity={0.18}\n />\n <polyline\n points={points.join(' ')}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n vectorEffect=\"non-scaling-stroke\"\n />\n </svg>\n );\n }\n\n return (\n <svg\n viewBox={`0 0 ${w} ${height}`}\n preserveAspectRatio=\"none\"\n className=\"block w-full\"\n style={{ height }}\n aria-hidden=\"true\"\n >\n <polyline\n points={points.join(' ')}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n vectorEffect=\"non-scaling-stroke\"\n />\n </svg>\n );\n};\n\n/**\n * 统计卡片:仪表盘等场景的「标签 + 数值 + 图标」小卡。\n * 内部基于 Card 组件,默认紧凑内边距与小号字体。\n *\n * 传入 `panel` 后切换为 Grafana 风格统计面板:\n * 大号数值、单位后缀、迷你折线/面积/柱状图、角标三角与整卡填充色。\n */\nconst StatCard = ({\n label,\n value,\n icon,\n iconPosition = 'top',\n tone = 'primary',\n hint,\n loading = false,\n className = '',\n panel = false,\n unit,\n valueSize = 'xl',\n align = 'left',\n sparkline,\n sparklineData,\n sparklineType = 'line',\n sparklineHeight = 36,\n indicator = false,\n filled = false,\n onClick,\n}: StatCardProps) => {\n const t = TONE_CLASS[tone];\n\n // ─── Grafana 风格统计面板 ───\n if (panel) {\n const sparklineNode =\n sparkline ??\n (sparklineData && sparklineData.length >= 2 ? (\n <MiniSparkline data={sparklineData} type={sparklineType} height={sparklineHeight} />\n ) : null);\n\n const textColor = filled ? '' : t.text;\n const mutedText = filled ? 'opacity-80' : 'text-base-content/60';\n\n return (\n <div\n onClick={onClick}\n className={cn(\n 'relative flex flex-col overflow-hidden rounded-lg p-3',\n filled ? FILLED_CLASS[tone] : 'border border-base-300/60 bg-base-200',\n onClick && 'cursor-pointer transition-colors hover:border-primary/40',\n className,\n )}\n >\n {indicator && !filled && (\n <span\n aria-hidden=\"true\"\n className=\"absolute right-0 top-0 h-0 w-0\"\n style={{\n borderTop: '14px solid ' + cssVarColor(tone),\n borderLeft: '14px solid transparent',\n }}\n />\n )}\n <div\n className={cn(\n 'truncate text-xs font-medium',\n mutedText,\n align === 'center' && 'text-center',\n )}\n >\n {label}\n </div>\n <div\n className={cn(\n 'flex min-h-[3rem] flex-1 items-center py-1',\n align === 'center' ? 'justify-center' : 'justify-start',\n )}\n >\n {loading ? (\n <span\n className={cn(\n 'inline-block h-8 w-16 animate-pulse rounded',\n filled ? 'bg-white/25' : 'bg-base-content/10',\n )}\n />\n ) : (\n <span\n className={cn(\n 'leading-none tracking-tight',\n VALUE_SIZE_CLASS[valueSize],\n 'font-semibold',\n filled ? '' : textColor,\n )}\n >\n {value}\n {unit !== undefined && unit !== null && unit !== '' && (\n <span className=\"ml-0.5 text-[0.45em] font-semibold\">{unit}</span>\n )}\n </span>\n )}\n </div>\n {sparklineNode && (\n <div className={cn('-mx-3 -mb-3 mt-1', filled ? 'text-white' : t.text)}>\n {sparklineNode}\n </div>\n )}\n </div>\n );\n }\n\n // 图标在左、文字居右的水平布局\n if (iconPosition === 'left') {\n return (\n <Card bordered glass={false} hover className={`bg-base-200 p-4 ${className}`.trim()}>\n <div className=\"flex items-center gap-3\">\n {icon && (\n <span className={`flex shrink-0 items-center justify-center rounded-lg p-2.5 ${t.bg} [&>svg]:h-5 [&>svg]:w-5 ${t.text}`.trim()}>\n {icon}\n </span>\n )}\n <div className=\"min-w-0 flex-1\">\n <span className=\"block truncate text-xs font-medium text-base-content/60\">{label}</span>\n {loading ? (\n <div className=\"mt-1 h-6 w-14 animate-pulse rounded bg-base-content/10\" />\n ) : (\n <p className=\"truncate text-xl font-bold leading-tight text-base-content\">{value}</p>\n )}\n {hint && <p className=\"mt-0.5 truncate text-[11px] text-base-content/50\">{hint}</p>}\n </div>\n </div>\n </Card>\n );\n }\n\n return (\n <Card bordered glass={false} hover className={`bg-base-200 p-4 ${className}`.trim()}>\n <div className=\"mb-2 flex items-center justify-between gap-2\">\n <span className=\"truncate text-xs font-medium text-base-content/60\">{label}</span>\n {icon && (\n <span className={`rounded-md p-1.5 ${t.bg} [&>svg]:h-4 [&>svg]:w-4 ${t.text}`.trim()}>\n {icon}\n </span>\n )}\n </div>\n {loading ? (\n <div className=\"h-7 w-14 animate-pulse rounded bg-base-content/10\" />\n ) : (\n <p className=\"text-2xl font-bold leading-none text-base-content\">{value}</p>\n )}\n {hint && <p className=\"mt-1.5 text-[11px] text-base-content/50\">{hint}</p>}\n </Card>\n );\n};\n\nexport default StatCard;\n"],"mappings":"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"}
|