@ug666/ui-react 0.1.0 → 0.2.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/dist/blocks/index.cjs +238 -0
- package/dist/blocks/index.cjs.map +1 -0
- package/dist/blocks/index.d.cts +86 -0
- package/dist/blocks/index.d.ts +86 -0
- package/dist/blocks/index.js +153 -0
- package/dist/blocks/index.js.map +1 -0
- package/dist/button-CaLZig8j.d.cts +22 -0
- package/dist/button-CaLZig8j.d.ts +22 -0
- package/dist/chunk-2IVRUJKO.js +377 -0
- package/dist/chunk-2IVRUJKO.js.map +1 -0
- package/dist/chunk-73WQAE3E.js +3003 -0
- package/dist/chunk-73WQAE3E.js.map +1 -0
- package/dist/chunk-RUDEZA5Q.js +62 -0
- package/dist/chunk-RUDEZA5Q.js.map +1 -0
- package/dist/chunk-S45GP6IB.js +254 -0
- package/dist/chunk-S45GP6IB.js.map +1 -0
- package/dist/components/index.cjs +3993 -0
- package/dist/components/index.cjs.map +1 -0
- package/dist/components/index.d.cts +1097 -0
- package/dist/components/index.d.ts +1097 -0
- package/dist/components/index.js +330 -0
- package/dist/components/index.js.map +1 -0
- package/dist/hooks/index.cjs +1 -0
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/index.cjs +1410 -710
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +274 -1340
- package/dist/index.d.ts +274 -1340
- package/dist/index.js +385 -3229
- package/dist/index.js.map +1 -1
- package/dist/labs/index.cjs +34 -0
- package/dist/labs/index.cjs.map +1 -0
- package/dist/labs/index.d.cts +12 -0
- package/dist/labs/index.d.ts +12 -0
- package/dist/labs/index.js +9 -0
- package/dist/labs/index.js.map +1 -0
- package/dist/patterns/index.cjs +758 -0
- package/dist/patterns/index.cjs.map +1 -0
- package/dist/patterns/index.d.cts +158 -0
- package/dist/patterns/index.d.ts +158 -0
- package/dist/patterns/index.js +320 -0
- package/dist/patterns/index.js.map +1 -0
- package/dist/primitives/index.cjs +384 -0
- package/dist/primitives/index.cjs.map +1 -0
- package/dist/primitives/index.d.cts +137 -0
- package/dist/primitives/index.d.ts +137 -0
- package/dist/primitives/index.js +56 -0
- package/dist/primitives/index.js.map +1 -0
- package/dist/sidebar-vl00Z2o-.d.cts +93 -0
- package/dist/sidebar-vl00Z2o-.d.ts +93 -0
- package/dist/styles.css +2499 -0
- package/dist/tokens.css +86 -9
- package/package.json +36 -6
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// src/internal/cn.ts
|
|
2
|
+
import { clsx } from "clsx";
|
|
3
|
+
import { twMerge } from "tailwind-merge";
|
|
4
|
+
function cn(...inputs) {
|
|
5
|
+
return twMerge(clsx(inputs));
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
// src/components/button.tsx
|
|
9
|
+
import { forwardRef } from "react";
|
|
10
|
+
import { Loader2 } from "lucide-react";
|
|
11
|
+
import { cva } from "class-variance-authority";
|
|
12
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
13
|
+
var buttonVariants = cva(
|
|
14
|
+
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-lg text-sm font-medium transition-[background,border-color,color,box-shadow,transform] duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
|
|
15
|
+
{
|
|
16
|
+
variants: {
|
|
17
|
+
variant: {
|
|
18
|
+
default: "bg-primary text-primary-fg shadow-sm hover:bg-primary-hover hover:shadow-md focus-visible:ring-ring",
|
|
19
|
+
destructive: "bg-danger text-danger-fg shadow-sm hover:bg-danger-hover hover:shadow-md focus-visible:ring-danger",
|
|
20
|
+
outline: "border border-border-strong bg-surface-1 text-text-primary shadow-sm hover:border-primary/55 hover:bg-surface-2 focus-visible:ring-ring/30",
|
|
21
|
+
secondary: "border border-border-base bg-surface-2 text-text-primary shadow-sm hover:bg-surface-3 focus-visible:ring-ring/30",
|
|
22
|
+
ghost: "text-text-primary hover:bg-surface-2 focus-visible:ring-ring/30",
|
|
23
|
+
link: "text-text-primary underline-offset-4 hover:underline focus-visible:ring-ring/30"
|
|
24
|
+
},
|
|
25
|
+
size: {
|
|
26
|
+
default: "h-9 px-4 py-2",
|
|
27
|
+
sm: "h-8 px-3 text-xs",
|
|
28
|
+
lg: "h-11 px-5 text-base",
|
|
29
|
+
icon: "h-9 w-9"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
defaultVariants: {
|
|
33
|
+
variant: "default",
|
|
34
|
+
size: "default"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
);
|
|
38
|
+
var Button = forwardRef(
|
|
39
|
+
({ className, variant, size, loading = false, disabled, children, ...props }, ref) => {
|
|
40
|
+
return /* @__PURE__ */ jsxs(
|
|
41
|
+
"button",
|
|
42
|
+
{
|
|
43
|
+
ref,
|
|
44
|
+
className: cn(buttonVariants({ variant, size }), className),
|
|
45
|
+
disabled: disabled || loading,
|
|
46
|
+
...props,
|
|
47
|
+
children: [
|
|
48
|
+
loading && /* @__PURE__ */ jsx(Loader2, { className: "animate-spin", size: 16 }),
|
|
49
|
+
children
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
);
|
|
55
|
+
Button.displayName = "Button";
|
|
56
|
+
|
|
57
|
+
export {
|
|
58
|
+
cn,
|
|
59
|
+
buttonVariants,
|
|
60
|
+
Button
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=chunk-RUDEZA5Q.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internal/cn.ts","../src/components/button.tsx"],"sourcesContent":["/**\n * @description: React 包内部类名合并工具\n * @author: UG - 一个斗码大陆苦逼的三段码之气的少年,并没有神秘戒指中码老的帮助,但总有一天,我会成为斗码大陆中码帝一样的存在。三十年河东,三十年河西,莫欺少年穷。\n * @date: 2026-05-27\n */\nimport { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs))\n}\n","/**\n * @description: Button 按钮组件 — 基于 CVA 管理变体,支持 loading/disabled 状态\n * @author: UG - 一个斗码大陆苦逼的三段码之气的少年,并没有神秘戒指中码老的帮助,但总有一天,我会成为斗码大陆中码帝一样的存在。三十年河东,三十年河西,莫欺少年穷。\n * @date: 2026-04-15\n */\nimport { forwardRef } from 'react'\nimport { Loader2 } from 'lucide-react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../internal/cn'\n\nconst buttonVariants = cva(\n 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-lg text-sm font-medium transition-[background,border-color,color,box-shadow,transform] duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',\n {\n variants: {\n variant: {\n default:\n 'bg-primary text-primary-fg shadow-sm hover:bg-primary-hover hover:shadow-md focus-visible:ring-ring',\n destructive:\n 'bg-danger text-danger-fg shadow-sm hover:bg-danger-hover hover:shadow-md focus-visible:ring-danger',\n outline:\n 'border border-border-strong bg-surface-1 text-text-primary shadow-sm hover:border-primary/55 hover:bg-surface-2 focus-visible:ring-ring/30',\n secondary:\n 'border border-border-base bg-surface-2 text-text-primary shadow-sm hover:bg-surface-3 focus-visible:ring-ring/30',\n ghost:\n 'text-text-primary hover:bg-surface-2 focus-visible:ring-ring/30',\n link: 'text-text-primary underline-offset-4 hover:underline focus-visible:ring-ring/30',\n },\n size: {\n default: 'h-9 px-4 py-2',\n sm: 'h-8 px-3 text-xs',\n lg: 'h-11 px-5 text-base',\n icon: 'h-9 w-9',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n /** 是否处于加载状态,加载时显示旋转图标并禁用点击 */\n loading?: boolean\n}\n\n/**\n * 通用按钮组件\n * @example\n * <Button variant=\"default\" size=\"lg\" onClick={handleClick}>确认</Button>\n * <Button variant=\"destructive\" loading>删除中...</Button>\n * <Button variant=\"outline\" size=\"sm\">取消</Button>\n */\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, loading = false, disabled, children, ...props }, ref) => {\n return (\n <button\n ref={ref}\n className={cn(buttonVariants({ variant, size }), className)}\n disabled={disabled || loading}\n {...props}\n >\n {loading && <Loader2 className=\"animate-spin\" size={16} />}\n {children}\n </button>\n )\n }\n)\n\nButton.displayName = 'Button'\n\nexport { Button, buttonVariants }\n"],"mappings":";AAKA,SAA0B,YAAY;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAA8B;AAClD,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;;;ACLA,SAAS,kBAAkB;AAC3B,SAAS,eAAe;AACxB,SAAS,WAA8B;AAmDjC,SAMc,KANd;AAhDN,IAAM,iBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,aACE;AAAA,QACF,SACE;AAAA,QACF,WACE;AAAA,QACF,OACE;AAAA,QACF,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAgBA,IAAM,SAAS;AAAA,EACb,CAAC,EAAE,WAAW,SAAS,MAAM,UAAU,OAAO,UAAU,UAAU,GAAG,MAAM,GAAG,QAAQ;AACpF,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,GAAG,eAAe,EAAE,SAAS,KAAK,CAAC,GAAG,SAAS;AAAA,QAC1D,UAAU,YAAY;AAAA,QACrB,GAAG;AAAA,QAEH;AAAA,qBAAW,oBAAC,WAAQ,WAAU,gBAAe,MAAM,IAAI;AAAA,UACvD;AAAA;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AAEA,OAAO,cAAc;","names":[]}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import {
|
|
2
|
+
cn
|
|
3
|
+
} from "./chunk-RUDEZA5Q.js";
|
|
4
|
+
|
|
5
|
+
// src/components/input.tsx
|
|
6
|
+
import { forwardRef, useId } from "react";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
var Input = forwardRef(
|
|
9
|
+
({ className, label, error, helperText, id, ...props }, ref) => {
|
|
10
|
+
const generatedId = useId();
|
|
11
|
+
const inputId = id ?? generatedId;
|
|
12
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
13
|
+
label && /* @__PURE__ */ jsx(
|
|
14
|
+
"label",
|
|
15
|
+
{
|
|
16
|
+
htmlFor: inputId,
|
|
17
|
+
className: "text-sm font-medium text-text-primary",
|
|
18
|
+
children: label
|
|
19
|
+
}
|
|
20
|
+
),
|
|
21
|
+
/* @__PURE__ */ jsx(
|
|
22
|
+
"input",
|
|
23
|
+
{
|
|
24
|
+
ref,
|
|
25
|
+
id: inputId,
|
|
26
|
+
className: cn(
|
|
27
|
+
"flex h-9 w-full rounded-md border bg-surface-1 px-3 py-2 text-sm text-text-primary placeholder:text-text-tertiary",
|
|
28
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-1",
|
|
29
|
+
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
30
|
+
error ? "border-danger focus-visible:ring-danger" : "border-border-strong focus-visible:ring-ring/30",
|
|
31
|
+
className
|
|
32
|
+
),
|
|
33
|
+
...props
|
|
34
|
+
}
|
|
35
|
+
),
|
|
36
|
+
error && /* @__PURE__ */ jsx("p", { className: "text-xs text-danger", children: error }),
|
|
37
|
+
!error && helperText && /* @__PURE__ */ jsx("p", { className: "text-xs text-text-secondary", children: helperText })
|
|
38
|
+
] });
|
|
39
|
+
}
|
|
40
|
+
);
|
|
41
|
+
Input.displayName = "Input";
|
|
42
|
+
|
|
43
|
+
// src/components/label.tsx
|
|
44
|
+
import { forwardRef as forwardRef2 } from "react";
|
|
45
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
46
|
+
var Label = forwardRef2(({ className, required, children, ...props }, ref) => {
|
|
47
|
+
return /* @__PURE__ */ jsxs2(
|
|
48
|
+
"label",
|
|
49
|
+
{
|
|
50
|
+
ref,
|
|
51
|
+
className: cn(
|
|
52
|
+
"leading-none text-sm font-medium text-text-primary peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
|
|
53
|
+
className
|
|
54
|
+
),
|
|
55
|
+
...props,
|
|
56
|
+
children: [
|
|
57
|
+
children,
|
|
58
|
+
required && /* @__PURE__ */ jsx2("span", { className: "ml-0.5 text-danger", "aria-hidden": "true", children: "*" })
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
});
|
|
63
|
+
Label.displayName = "Label";
|
|
64
|
+
|
|
65
|
+
// src/components/card.tsx
|
|
66
|
+
import { forwardRef as forwardRef3 } from "react";
|
|
67
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
68
|
+
var Card = forwardRef3(({ className, ...props }, ref) => {
|
|
69
|
+
return /* @__PURE__ */ jsx3("div", { ref, className: cn("rounded-lg border border-border-base bg-surface-1 shadow-sm", className), ...props });
|
|
70
|
+
});
|
|
71
|
+
var CardHeader = forwardRef3(({ className, ...props }, ref) => {
|
|
72
|
+
return /* @__PURE__ */ jsx3("div", { ref, className: cn("flex flex-col gap-1 px-5 py-4 border-b border-border-base", className), ...props });
|
|
73
|
+
});
|
|
74
|
+
var CardTitle = forwardRef3(({ className, ...props }, ref) => {
|
|
75
|
+
return /* @__PURE__ */ jsx3("h3", { ref, className: cn("leading-none font-semibold text-text-primary", className), ...props });
|
|
76
|
+
});
|
|
77
|
+
var CardDescription = forwardRef3(({ className, ...props }, ref) => {
|
|
78
|
+
return /* @__PURE__ */ jsx3("p", { ref, className: cn("text-sm text-text-secondary", className), ...props });
|
|
79
|
+
});
|
|
80
|
+
var CardContent = forwardRef3(({ className, ...props }, ref) => {
|
|
81
|
+
return /* @__PURE__ */ jsx3("div", { ref, className: cn("px-5 py-4", className), ...props });
|
|
82
|
+
});
|
|
83
|
+
var CardFooter = forwardRef3(({ className, ...props }, ref) => {
|
|
84
|
+
return /* @__PURE__ */ jsx3("div", { ref, className: cn("flex items-center px-5 py-4 border-t border-border-base", className), ...props });
|
|
85
|
+
});
|
|
86
|
+
Card.displayName = "Card";
|
|
87
|
+
CardHeader.displayName = "CardHeader";
|
|
88
|
+
CardTitle.displayName = "CardTitle";
|
|
89
|
+
CardDescription.displayName = "CardDescription";
|
|
90
|
+
CardContent.displayName = "CardContent";
|
|
91
|
+
CardFooter.displayName = "CardFooter";
|
|
92
|
+
|
|
93
|
+
// src/components/badge.tsx
|
|
94
|
+
import { forwardRef as forwardRef4 } from "react";
|
|
95
|
+
import { cva } from "class-variance-authority";
|
|
96
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
97
|
+
var badgeVariants = cva(
|
|
98
|
+
"inline-flex min-h-6 items-center rounded-md px-2.5 py-0.5 text-xs font-semibold leading-none transition-colors",
|
|
99
|
+
{
|
|
100
|
+
variants: {
|
|
101
|
+
variant: {
|
|
102
|
+
default: "border border-primary/20 bg-primary-soft text-primary-soft-fg",
|
|
103
|
+
secondary: "border border-border-base bg-surface-2 text-text-primary",
|
|
104
|
+
destructive: "border border-danger/20 bg-danger-soft text-danger-soft-fg",
|
|
105
|
+
outline: "border border-border-strong bg-transparent text-text-primary",
|
|
106
|
+
success: "border border-success/20 bg-success-soft text-success-soft-fg",
|
|
107
|
+
warning: "border border-warning/20 bg-warning-soft text-warning-soft-fg"
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
defaultVariants: {
|
|
111
|
+
variant: "default"
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
);
|
|
115
|
+
var Badge = forwardRef4(({ className, variant, ...props }, ref) => {
|
|
116
|
+
return /* @__PURE__ */ jsx4("span", { ref, className: cn(badgeVariants({ variant }), className), ...props });
|
|
117
|
+
});
|
|
118
|
+
Badge.displayName = "Badge";
|
|
119
|
+
|
|
120
|
+
// src/components/tag.tsx
|
|
121
|
+
import { forwardRef as forwardRef5 } from "react";
|
|
122
|
+
import { X } from "lucide-react";
|
|
123
|
+
import { cva as cva2 } from "class-variance-authority";
|
|
124
|
+
import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
125
|
+
var tagVariants = cva2(
|
|
126
|
+
"inline-flex items-center gap-1.5 rounded-md border font-medium leading-none transition-colors",
|
|
127
|
+
{
|
|
128
|
+
variants: {
|
|
129
|
+
variant: {
|
|
130
|
+
default: "border-border-base bg-surface-2 text-text-primary",
|
|
131
|
+
primary: "border-primary/20 bg-primary-soft text-primary-soft-fg",
|
|
132
|
+
success: "border-success/20 bg-success-soft text-success-soft-fg",
|
|
133
|
+
warning: "border-warning/20 bg-warning-soft text-warning-soft-fg",
|
|
134
|
+
destructive: "border-danger/20 bg-danger-soft text-danger-soft-fg",
|
|
135
|
+
outline: "border-border-strong bg-transparent text-text-primary"
|
|
136
|
+
},
|
|
137
|
+
size: {
|
|
138
|
+
sm: "min-h-6 px-2 text-[11px]",
|
|
139
|
+
default: "min-h-7 px-2.5 text-xs"
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
defaultVariants: {
|
|
143
|
+
variant: "default",
|
|
144
|
+
size: "default"
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
);
|
|
148
|
+
var Tag = forwardRef5(
|
|
149
|
+
({ variant, size, closable = false, disabled = false, color, onClose, className, children, style, ...props }, ref) => {
|
|
150
|
+
const customStyle = color ? { backgroundColor: color, color: "hsl(var(--primary-fg))", borderColor: color, ...style } : style ?? {};
|
|
151
|
+
function handleClose(event) {
|
|
152
|
+
event.stopPropagation();
|
|
153
|
+
if (!disabled) {
|
|
154
|
+
onClose?.(event);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return /* @__PURE__ */ jsxs3(
|
|
158
|
+
"span",
|
|
159
|
+
{
|
|
160
|
+
ref,
|
|
161
|
+
className: cn(tagVariants({ variant, size }), disabled && "cursor-not-allowed opacity-50", className),
|
|
162
|
+
style: customStyle,
|
|
163
|
+
...props,
|
|
164
|
+
children: [
|
|
165
|
+
children,
|
|
166
|
+
closable && /* @__PURE__ */ jsx5(
|
|
167
|
+
"button",
|
|
168
|
+
{
|
|
169
|
+
type: "button",
|
|
170
|
+
onClick: handleClose,
|
|
171
|
+
disabled,
|
|
172
|
+
className: "-mr-1 inline-flex h-4 w-4 items-center justify-center rounded-sm opacity-70 transition hover:bg-surface-3 hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-current disabled:pointer-events-none",
|
|
173
|
+
"aria-label": "\u5173\u95ED\u6807\u7B7E",
|
|
174
|
+
children: /* @__PURE__ */ jsx5(X, { size: 10, strokeWidth: 2.5 })
|
|
175
|
+
}
|
|
176
|
+
)
|
|
177
|
+
]
|
|
178
|
+
}
|
|
179
|
+
);
|
|
180
|
+
}
|
|
181
|
+
);
|
|
182
|
+
Tag.displayName = "Tag";
|
|
183
|
+
|
|
184
|
+
// src/components/spinner.tsx
|
|
185
|
+
import { forwardRef as forwardRef6 } from "react";
|
|
186
|
+
import { Loader2 } from "lucide-react";
|
|
187
|
+
import { cva as cva3 } from "class-variance-authority";
|
|
188
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
189
|
+
var spinnerVariants = cva3("animate-spin text-text-tertiary", {
|
|
190
|
+
variants: {
|
|
191
|
+
size: {
|
|
192
|
+
sm: "h-4 w-4",
|
|
193
|
+
md: "h-6 w-6",
|
|
194
|
+
lg: "h-10 w-10"
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
defaultVariants: {
|
|
198
|
+
size: "md"
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
var Spinner = forwardRef6(({ className, size, label = "\u52A0\u8F7D\u4E2D", ...props }, ref) => {
|
|
202
|
+
return /* @__PURE__ */ jsx6(
|
|
203
|
+
Loader2,
|
|
204
|
+
{
|
|
205
|
+
ref,
|
|
206
|
+
className: cn(spinnerVariants({ size }), className),
|
|
207
|
+
"aria-label": label,
|
|
208
|
+
role: "status",
|
|
209
|
+
...props
|
|
210
|
+
}
|
|
211
|
+
);
|
|
212
|
+
});
|
|
213
|
+
Spinner.displayName = "Spinner";
|
|
214
|
+
|
|
215
|
+
// src/components/separator.tsx
|
|
216
|
+
import { forwardRef as forwardRef7 } from "react";
|
|
217
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
218
|
+
var ORIENTATION_CLASSES = {
|
|
219
|
+
horizontal: "h-px w-full bg-border-base",
|
|
220
|
+
vertical: "w-px h-full bg-border-base"
|
|
221
|
+
};
|
|
222
|
+
var Separator = forwardRef7(
|
|
223
|
+
({ orientation = "horizontal", className, ...props }, ref) => {
|
|
224
|
+
return /* @__PURE__ */ jsx7(
|
|
225
|
+
"div",
|
|
226
|
+
{
|
|
227
|
+
ref,
|
|
228
|
+
role: "separator",
|
|
229
|
+
"aria-orientation": orientation,
|
|
230
|
+
className: cn(ORIENTATION_CLASSES[orientation], className),
|
|
231
|
+
...props
|
|
232
|
+
}
|
|
233
|
+
);
|
|
234
|
+
}
|
|
235
|
+
);
|
|
236
|
+
Separator.displayName = "Separator";
|
|
237
|
+
|
|
238
|
+
export {
|
|
239
|
+
Input,
|
|
240
|
+
Label,
|
|
241
|
+
Card,
|
|
242
|
+
CardHeader,
|
|
243
|
+
CardTitle,
|
|
244
|
+
CardDescription,
|
|
245
|
+
CardContent,
|
|
246
|
+
CardFooter,
|
|
247
|
+
badgeVariants,
|
|
248
|
+
Badge,
|
|
249
|
+
tagVariants,
|
|
250
|
+
Tag,
|
|
251
|
+
Spinner,
|
|
252
|
+
Separator
|
|
253
|
+
};
|
|
254
|
+
//# sourceMappingURL=chunk-S45GP6IB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/input.tsx","../src/components/label.tsx","../src/components/card.tsx","../src/components/badge.tsx","../src/components/tag.tsx","../src/components/spinner.tsx","../src/components/separator.tsx"],"sourcesContent":["/**\n * @description: Input 输入框组件 — 支持 label、error、helperText,error 状态边框变红\n * @author: UG - 一个斗码大陆苦逼的三段码之气的少年,并没有神秘戒指中码老的帮助,但总有一天,我会成为斗码大陆中码帝一样的存在。三十年河东,三十年河西,莫欺少年穷。\n * @date: 2026-04-15\n */\nimport { forwardRef, useId } from 'react'\nimport { cn } from '../internal/cn'\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n /** 输入框标签文本 */\n label?: string\n /** 错误提示文本,有值时边框变红 */\n error?: string\n /** 帮助说明文本 */\n helperText?: string\n}\n\n/**\n * 通用输入框组件\n * @example\n * <Input label=\"用户名\" placeholder=\"请输入用户名\" />\n * <Input label=\"邮箱\" error=\"邮箱格式不正确\" value={email} onChange={handleChange} />\n * <Input label=\"备注\" helperText=\"最多 200 字\" />\n */\nconst Input = forwardRef<HTMLInputElement, InputProps>(\n ({ className, label, error, helperText, id, ...props }, ref) => {\n const generatedId = useId()\n const inputId = id ?? generatedId\n\n return (\n <div className=\"flex flex-col gap-1\">\n {label && (\n <label\n htmlFor={inputId}\n className=\"text-sm font-medium text-text-primary\"\n >\n {label}\n </label>\n )}\n <input\n ref={ref}\n id={inputId}\n className={cn(\n 'flex h-9 w-full rounded-md border bg-surface-1 px-3 py-2 text-sm text-text-primary placeholder:text-text-tertiary',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-1',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n error\n ? 'border-danger focus-visible:ring-danger'\n : 'border-border-strong focus-visible:ring-ring/30',\n className\n )}\n {...props}\n />\n {error && (\n <p className=\"text-xs text-danger\">{error}</p>\n )}\n {!error && helperText && (\n <p className=\"text-xs text-text-secondary\">{helperText}</p>\n )}\n </div>\n )\n }\n)\n\nInput.displayName = 'Input'\n\nexport { Input }\n","/**\n * @description: Label 标签组件 — 支持 required 红色星号标记\n * @author: UG - 一个斗码大陆苦逼的三段码之气的少年,并没有神秘戒指中码老的帮助,但总有一天,我会成为斗码大陆中码帝一样的存在。三十年河东,三十年河西,莫欺少年穷。\n * @date: 2026-04-15\n */\nimport { forwardRef } from 'react'\nimport { cn } from '../internal/cn'\n\nexport interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n /** 是否为必填项,显示红色星号 */\n required?: boolean\n}\n\n/**\n * 通用标签组件\n * @example\n * <Label htmlFor=\"email\">邮箱</Label>\n * <Label htmlFor=\"name\" required>姓名</Label>\n */\nconst Label = forwardRef<HTMLLabelElement, LabelProps>(({ className, required, children, ...props }, ref) => {\n return (\n <label\n ref={ref}\n className={cn(\n 'leading-none text-sm font-medium text-text-primary peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n className\n )}\n {...props}\n >\n {children}\n {required && (\n <span className=\"ml-0.5 text-danger\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )\n})\n\nLabel.displayName = 'Label'\n\nexport { Label }\n","/**\n * @description: Card 卡片组件 — 包含 Card/CardHeader/CardTitle/CardDescription/CardContent/CardFooter\n * @author: UG - 一个斗码大陆苦逼的三段码之气的少年,并没有神秘戒指中码老的帮助,但总有一天,我会成为斗码大陆中码帝一样的存在。三十年河东,三十年河西,莫欺少年穷。\n * @date: 2026-04-15\n */\nimport { forwardRef } from 'react'\nimport { cn } from '../internal/cn'\n\nexport type CardProps = React.HTMLAttributes<HTMLDivElement>\nexport type CardHeaderProps = React.HTMLAttributes<HTMLDivElement>\nexport type CardTitleProps = React.HTMLAttributes<HTMLHeadingElement>\nexport type CardDescriptionProps = React.HTMLAttributes<HTMLParagraphElement>\nexport type CardContentProps = React.HTMLAttributes<HTMLDivElement>\nexport type CardFooterProps = React.HTMLAttributes<HTMLDivElement>\n\n/**\n * 卡片容器\n * @example\n * <Card>\n * <CardHeader>\n * <CardTitle>标题</CardTitle>\n * <CardDescription>描述文字</CardDescription>\n * </CardHeader>\n * <CardContent>内容区域</CardContent>\n * <CardFooter>底部操作</CardFooter>\n * </Card>\n */\nconst Card = forwardRef<HTMLDivElement, CardProps>(({ className, ...props }, ref) => {\n return <div ref={ref} className={cn('rounded-lg border border-border-base bg-surface-1 shadow-sm', className)} {...props} />\n})\n\nconst CardHeader = forwardRef<HTMLDivElement, CardHeaderProps>(({ className, ...props }, ref) => {\n return <div ref={ref} className={cn('flex flex-col gap-1 px-5 py-4 border-b border-border-base', className)} {...props} />\n})\n\nconst CardTitle = forwardRef<HTMLHeadingElement, CardTitleProps>(({ className, ...props }, ref) => {\n return <h3 ref={ref} className={cn('leading-none font-semibold text-text-primary', className)} {...props} />\n})\n\nconst CardDescription = forwardRef<HTMLParagraphElement, CardDescriptionProps>(({ className, ...props }, ref) => {\n return <p ref={ref} className={cn('text-sm text-text-secondary', className)} {...props} />\n})\n\nconst CardContent = forwardRef<HTMLDivElement, CardContentProps>(({ className, ...props }, ref) => {\n return <div ref={ref} className={cn('px-5 py-4', className)} {...props} />\n})\n\nconst CardFooter = forwardRef<HTMLDivElement, CardFooterProps>(({ className, ...props }, ref) => {\n return <div ref={ref} className={cn('flex items-center px-5 py-4 border-t border-border-base', className)} {...props} />\n})\n\nCard.displayName = 'Card'\nCardHeader.displayName = 'CardHeader'\nCardTitle.displayName = 'CardTitle'\nCardDescription.displayName = 'CardDescription'\nCardContent.displayName = 'CardContent'\nCardFooter.displayName = 'CardFooter'\n\nexport { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter }\n","/**\n * @description: Badge 徽标组件 — 基于 CVA 管理 default/secondary/destructive/outline/success/warning 变体\n * @author: UG - 一个斗码大陆苦逼的三段码之气的少年,并没有神秘戒指中码老的帮助,但总有一天,我会成为斗码大陆中码帝一样的存在。三十年河东,三十年河西,莫欺少年穷。\n * @date: 2026-04-15\n */\nimport { forwardRef } from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../internal/cn'\n\nconst badgeVariants = cva(\n 'inline-flex min-h-6 items-center rounded-md px-2.5 py-0.5 text-xs font-semibold leading-none transition-colors',\n {\n variants: {\n variant: {\n default:\n 'border border-primary/20 bg-primary-soft text-primary-soft-fg',\n secondary:\n 'border border-border-base bg-surface-2 text-text-primary',\n destructive:\n 'border border-danger/20 bg-danger-soft text-danger-soft-fg',\n outline:\n 'border border-border-strong bg-transparent text-text-primary',\n success:\n 'border border-success/20 bg-success-soft text-success-soft-fg',\n warning:\n 'border border-warning/20 bg-warning-soft text-warning-soft-fg',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {}\n\n/**\n * 徽标组件\n * @example\n * <Badge variant=\"default\">新品</Badge>\n * <Badge variant=\"success\">已完成</Badge>\n * <Badge variant=\"destructive\">已删除</Badge>\n * <Badge variant=\"warning\">待审核</Badge>\n */\nconst Badge = forwardRef<HTMLSpanElement, BadgeProps>(({ className, variant, ...props }, ref) => {\n return <span ref={ref} className={cn(badgeVariants({ variant }), className)} {...props} />\n})\n\nBadge.displayName = 'Badge'\n\nexport { Badge, badgeVariants }\n","/**\n * @description: Tag 标签组件 — 支持多种语义变体、可关闭交互,区别于纯展示的 Badge\n * @author: UG - 一个斗码大陆苦逼的三段码之气的少年,并没有神秘戒指中码老的帮助,但总有一天,我会成为斗码大陆中码帝一样的存在。三十年河东,三十年河西,莫欺少年穷。\n * @date: 2026-04-17\n */\nimport { forwardRef } from 'react'\nimport { X } from 'lucide-react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../internal/cn'\n\nconst tagVariants = cva(\n 'inline-flex items-center gap-1.5 rounded-md border font-medium leading-none transition-colors',\n {\n variants: {\n variant: {\n default: 'border-border-base bg-surface-2 text-text-primary',\n primary: 'border-primary/20 bg-primary-soft text-primary-soft-fg',\n success: 'border-success/20 bg-success-soft text-success-soft-fg',\n warning: 'border-warning/20 bg-warning-soft text-warning-soft-fg',\n destructive: 'border-danger/20 bg-danger-soft text-danger-soft-fg',\n outline: 'border-border-strong bg-transparent text-text-primary',\n },\n size: {\n sm: 'min-h-6 px-2 text-[11px]',\n default: 'min-h-7 px-2.5 text-xs',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n)\n\nexport interface TagProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'color'>,\n VariantProps<typeof tagVariants> {\n /** 是否显示关闭按钮 */\n closable?: boolean\n /** 是否禁用 */\n disabled?: boolean\n /** 自定义背景色(覆盖 variant 颜色,建议传 token CSS 变量) */\n color?: string\n /** 关闭按钮点击回调 */\n onClose?: (event: React.MouseEvent<HTMLButtonElement>) => void\n}\n\n/**\n * 标签组件(可交互,支持关闭)\n * @example\n * <Tag>默认标签</Tag>\n * <Tag variant=\"success\">已完成</Tag>\n * <Tag variant=\"primary\" closable onClose={removeTag}>可关闭</Tag>\n * <Tag variant=\"warning\" disabled>禁用状态</Tag>\n * <Tag color=\"hsl(var(--primary))\">自定义颜色</Tag>\n */\nconst Tag = forwardRef<HTMLSpanElement, TagProps>(\n ({ variant, size, closable = false, disabled = false, color, onClose, className, children, style, ...props }, ref) => {\n const customStyle: React.CSSProperties = color\n ? { backgroundColor: color, color: 'hsl(var(--primary-fg))', borderColor: color, ...style }\n : (style ?? {})\n\n function handleClose(event: React.MouseEvent<HTMLButtonElement>) {\n event.stopPropagation()\n if (!disabled) {\n onClose?.(event)\n }\n }\n\n return (\n <span\n ref={ref}\n className={cn(tagVariants({ variant, size }), disabled && 'cursor-not-allowed opacity-50', className)}\n style={customStyle}\n {...props}\n >\n {children}\n {closable && (\n <button\n type=\"button\"\n onClick={handleClose}\n disabled={disabled}\n className=\"-mr-1 inline-flex h-4 w-4 items-center justify-center rounded-sm opacity-70 transition hover:bg-surface-3 hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-current disabled:pointer-events-none\"\n aria-label=\"关闭标签\"\n >\n <X size={10} strokeWidth={2.5} />\n </button>\n )}\n </span>\n )\n }\n)\n\nTag.displayName = 'Tag'\n\nexport { Tag, tagVariants }\n","/**\n * @description: Spinner 加载旋转组件 — 基于 Loader2 图标,支持 sm/md/lg 三种尺寸\n * @author: UG - 一个斗码大陆苦逼的三段码之气的少年,并没有神秘戒指中码老的帮助,但总有一天,我会成为斗码大陆中码帝一样的存在。三十年河东,三十年河西,莫欺少年穷。\n * @date: 2026-04-15\n */\nimport { forwardRef } from 'react'\nimport { Loader2 } from 'lucide-react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../internal/cn'\n\nconst spinnerVariants = cva('animate-spin text-text-tertiary', {\n variants: {\n size: {\n sm: 'h-4 w-4',\n md: 'h-6 w-6',\n lg: 'h-10 w-10',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport interface SpinnerProps\n extends React.HTMLAttributes<SVGSVGElement>,\n VariantProps<typeof spinnerVariants> {\n /** 无障碍标签 */\n label?: string\n}\n\n/**\n * 加载旋转动画\n * @example\n * <Spinner />\n * <Spinner size=\"sm\" />\n * <Spinner size=\"lg\" className=\"text-primary\" />\n */\nconst Spinner = forwardRef<SVGSVGElement, SpinnerProps>(({ className, size, label = '加载中', ...props }, ref) => {\n return (\n <Loader2\n ref={ref}\n className={cn(spinnerVariants({ size }), className)}\n aria-label={label}\n role=\"status\"\n {...props}\n />\n )\n})\n\nSpinner.displayName = 'Spinner'\n\nexport { Spinner }\n","/**\n * @description: Separator 分割线组件 — 支持水平/垂直方向,纯展示组件\n * @author: UG - 一个斗码大陆苦逼的三段码之气的少年,并没有神秘戒指中码老的帮助,但总有一天,我会成为斗码大陆中码帝一样的存在。三十年河东,三十年河西,莫欺少年穷。\n * @date: 2026-04-17\n */\nimport { forwardRef } from 'react'\nimport { cn } from '../internal/cn'\n\n/** 分割线方向 */\nexport type SeparatorOrientation = 'horizontal' | 'vertical'\n\nexport interface SeparatorProps extends React.HTMLAttributes<HTMLDivElement> {\n /** 方向,默认 horizontal */\n orientation?: SeparatorOrientation\n}\n\n/** 各方向样式映射 */\nconst ORIENTATION_CLASSES: Record<SeparatorOrientation, string> = {\n horizontal: 'h-px w-full bg-border-base',\n vertical: 'w-px h-full bg-border-base',\n}\n\n/**\n * 分割线\n * @example\n * // 水平分割线\n * <Separator />\n *\n * // 垂直分割线(父容器需设定高度)\n * <div className=\"flex h-8 items-center gap-4\">\n * <span>左侧文字</span>\n * <Separator orientation=\"vertical\" />\n * <span>右侧文字</span>\n * </div>\n */\nconst Separator = forwardRef<HTMLDivElement, SeparatorProps>(\n ({ orientation = 'horizontal', className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation}\n className={cn(ORIENTATION_CLASSES[orientation], className)}\n {...props}\n />\n )\n }\n)\n\nSeparator.displayName = 'Separator'\n\nexport { Separator }\n"],"mappings":"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","names":["forwardRef","jsx","jsxs","forwardRef","forwardRef","jsx","forwardRef","forwardRef","jsx","forwardRef","forwardRef","cva","jsx","jsxs","cva","forwardRef","forwardRef","cva","jsx","cva","forwardRef","forwardRef","jsx","forwardRef"]}
|