kaleido-ui 0.1.0 → 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.
- package/dist/css/kaleido-ui.css +63 -176
- package/dist/native/index.cjs +54 -41
- package/dist/native/index.d.cts +56 -51
- package/dist/native/index.d.ts +56 -51
- package/dist/native/index.js +54 -41
- package/dist/tailwind/index.cjs +67 -77
- package/dist/tailwind/index.d.cts +8 -28
- package/dist/tailwind/index.d.ts +8 -28
- package/dist/tailwind/index.js +67 -77
- package/dist/tokens/index.cjs +49 -35
- package/dist/tokens/index.d.cts +45 -39
- package/dist/tokens/index.d.ts +45 -39
- package/dist/tokens/index.js +49 -35
- package/dist/web/index.cjs +48 -42
- package/dist/web/index.js +48 -42
- package/package.json +12 -2
package/dist/web/index.cjs
CHANGED
|
@@ -101,16 +101,16 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
|
|
|
101
101
|
{
|
|
102
102
|
variants: {
|
|
103
103
|
variant: {
|
|
104
|
-
default: "bg-primary text-primary-foreground hover:bg-primary/90
|
|
104
|
+
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
105
105
|
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
106
|
-
outline: "border border-border bg-transparent hover:bg-accent hover:text-accent-foreground
|
|
106
|
+
outline: "border border-border bg-transparent hover:bg-accent hover:text-accent-foreground",
|
|
107
107
|
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
108
|
-
ghost: "hover:bg-
|
|
108
|
+
ghost: "hover:bg-accent hover:text-foreground",
|
|
109
109
|
link: "text-primary underline-offset-4 hover:underline",
|
|
110
|
-
glow: "bg-primary text-primary-foreground shadow-
|
|
111
|
-
surface: "bg-card text-card-foreground border border-border hover:bg-accent
|
|
112
|
-
cta: "w-full bg-primary hover:bg-primary
|
|
113
|
-
"cta-gradient": "w-full bg-gradient-to-r from-primary to-primary
|
|
110
|
+
glow: "bg-primary text-primary-foreground shadow-md",
|
|
111
|
+
surface: "bg-card text-card-foreground border border-border hover:bg-accent",
|
|
112
|
+
cta: "w-full bg-primary hover:bg-primary/90 text-primary-foreground font-bold rounded-2xl shadow-md disabled:opacity-50 disabled:cursor-not-allowed disabled:shadow-none",
|
|
113
|
+
"cta-gradient": "w-full bg-gradient-to-r from-primary to-primary/80 text-primary-foreground font-extrabold rounded-2xl shadow-lg hover:opacity-90 hover:-translate-y-0.5 active:translate-y-0 active:opacity-100 disabled:opacity-40 disabled:shadow-none disabled:cursor-not-allowed disabled:bg-accent disabled:text-muted-foreground",
|
|
114
114
|
"danger-subtle": "w-full bg-red-500/10 border border-red-500/20 text-red-400 font-bold rounded-xl hover:bg-red-500/20"
|
|
115
115
|
},
|
|
116
116
|
size: {
|
|
@@ -201,7 +201,7 @@ var Input = React3.forwardRef(
|
|
|
201
201
|
{
|
|
202
202
|
type,
|
|
203
203
|
className: cn(
|
|
204
|
-
"flex h-12 w-full rounded-xl border border-border bg-card px-4 py-3 text-base ring-offset-background transition-all file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-
|
|
204
|
+
"flex h-12 w-full rounded-xl border border-border bg-card px-4 py-3 text-base ring-offset-background transition-all file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:border-ring disabled:cursor-not-allowed disabled:opacity-50",
|
|
205
205
|
className
|
|
206
206
|
),
|
|
207
207
|
ref,
|
|
@@ -396,8 +396,8 @@ var TabsTrigger = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
396
396
|
ref,
|
|
397
397
|
className: cn(
|
|
398
398
|
"inline-flex items-center justify-center whitespace-nowrap rounded-lg px-4 py-2 text-sm font-semibold ring-offset-background transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
|
|
399
|
-
"hover:text-foreground hover:bg-
|
|
400
|
-
"data-[state=active]:bg-primary data-[state=active]:text-primary-foreground
|
|
399
|
+
"hover:text-foreground hover:bg-accent",
|
|
400
|
+
"data-[state=active]:bg-primary data-[state=active]:text-primary-foreground",
|
|
401
401
|
className
|
|
402
402
|
),
|
|
403
403
|
...props
|
|
@@ -458,7 +458,7 @@ var toastVariants = (0, import_class_variance_authority3.cva)(
|
|
|
458
458
|
{
|
|
459
459
|
variants: {
|
|
460
460
|
variant: {
|
|
461
|
-
default: "border-
|
|
461
|
+
default: "border-border bg-card/95 text-foreground",
|
|
462
462
|
destructive: "border-red-500/20 bg-red-500/10 text-red-400"
|
|
463
463
|
}
|
|
464
464
|
},
|
|
@@ -495,7 +495,7 @@ var ToastClose = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
495
495
|
{
|
|
496
496
|
ref,
|
|
497
497
|
className: cn(
|
|
498
|
-
"absolute right-2 top-2 rounded-full p-1 text-
|
|
498
|
+
"absolute right-2 top-2 rounded-full p-1 text-muted-foreground opacity-100 transition-all hover:text-foreground hover:bg-accent focus:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:hover:bg-red-500/20 group-[.destructive]:focus:ring-red-400",
|
|
499
499
|
className
|
|
500
500
|
),
|
|
501
501
|
"toast-close": "",
|
|
@@ -508,7 +508,7 @@ var ToastTitle = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
508
508
|
ToastPrimitives.Title,
|
|
509
509
|
{
|
|
510
510
|
ref,
|
|
511
|
-
className: cn("text-sm font-semibold text-
|
|
511
|
+
className: cn("text-sm font-semibold text-foreground", className),
|
|
512
512
|
...props
|
|
513
513
|
}
|
|
514
514
|
));
|
|
@@ -517,7 +517,7 @@ var ToastDescription = React7.forwardRef(({ className, ...props }, ref) => /* @_
|
|
|
517
517
|
ToastPrimitives.Description,
|
|
518
518
|
{
|
|
519
519
|
ref,
|
|
520
|
-
className: cn("text-xs text-
|
|
520
|
+
className: cn("text-xs text-muted-foreground", className),
|
|
521
521
|
...props
|
|
522
522
|
}
|
|
523
523
|
));
|
|
@@ -642,7 +642,7 @@ function ToastWithProgress({ id, title, description, action, duration = 4e3, var
|
|
|
642
642
|
if (variant === "destructive") {
|
|
643
643
|
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Icon, { name: "error", size: "md", className: "text-red-400" });
|
|
644
644
|
}
|
|
645
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Icon, { name: "check_circle", size: "md", className: "text-
|
|
645
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Icon, { name: "check_circle", size: "md", className: "text-foreground" });
|
|
646
646
|
};
|
|
647
647
|
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Toast, { ...props, variant, children: [
|
|
648
648
|
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex items-start gap-3 flex-1", children: [
|
|
@@ -939,7 +939,7 @@ function AssetIcon({ ticker, logoUri, cdnBaseUrl, size = 40, className }) {
|
|
|
939
939
|
"div",
|
|
940
940
|
{
|
|
941
941
|
className: cn(
|
|
942
|
-
"rounded-full flex items-center justify-center font-bold text-
|
|
942
|
+
"rounded-full flex items-center justify-center font-bold text-foreground shadow-inner border border-border",
|
|
943
943
|
bgColor,
|
|
944
944
|
className
|
|
945
945
|
),
|
|
@@ -966,8 +966,8 @@ function AssetCard({
|
|
|
966
966
|
"div",
|
|
967
967
|
{
|
|
968
968
|
className: cn(
|
|
969
|
-
"p-4 rounded-card bg-background
|
|
970
|
-
onClick && "cursor-pointer hover:border-primary/40
|
|
969
|
+
"p-4 rounded-card bg-background/40 backdrop-blur-xl border border-border transition-all shadow-sm relative overflow-hidden group",
|
|
970
|
+
onClick && "cursor-pointer hover:border-primary/40 active:scale-[0.98]",
|
|
971
971
|
className
|
|
972
972
|
),
|
|
973
973
|
onClick,
|
|
@@ -989,7 +989,7 @@ function AssetCard({
|
|
|
989
989
|
"span",
|
|
990
990
|
{
|
|
991
991
|
className: cn(
|
|
992
|
-
"font-bold text-base leading-tight tracking-wide text-
|
|
992
|
+
"font-bold text-base leading-tight tracking-wide text-foreground",
|
|
993
993
|
onClick && "group-hover:text-primary transition-colors"
|
|
994
994
|
),
|
|
995
995
|
children: name
|
|
@@ -999,8 +999,8 @@ function AssetCard({
|
|
|
999
999
|
] })
|
|
1000
1000
|
] }),
|
|
1001
1001
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "text-right", children: [
|
|
1002
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { className: "font-bold text-base tracking-tight text-
|
|
1003
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { className: "text-tiny text-
|
|
1002
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { className: "font-bold text-base tracking-tight text-foreground group-hover:opacity-90 transition-colors", children: shown }),
|
|
1003
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { className: "text-tiny text-muted-foreground font-medium tracking-wide uppercase mt-0.5", children: ticker })
|
|
1004
1004
|
] })
|
|
1005
1005
|
] })
|
|
1006
1006
|
]
|
|
@@ -1025,8 +1025,8 @@ function TransactionCard({
|
|
|
1025
1025
|
"div",
|
|
1026
1026
|
{
|
|
1027
1027
|
className: cn(
|
|
1028
|
-
"p-4 rounded-card bg-background
|
|
1029
|
-
onClick && "cursor-pointer hover:border-primary/40
|
|
1028
|
+
"p-4 rounded-card bg-background/40 backdrop-blur-xl border border-border flex items-center justify-between transition-all shadow-sm relative overflow-hidden group",
|
|
1029
|
+
onClick && "cursor-pointer hover:border-primary/40 active:scale-[0.98]",
|
|
1030
1030
|
className
|
|
1031
1031
|
),
|
|
1032
1032
|
onClick,
|
|
@@ -1038,7 +1038,7 @@ function TransactionCard({
|
|
|
1038
1038
|
{
|
|
1039
1039
|
className: cn(
|
|
1040
1040
|
"size-11 rounded-full flex items-center justify-center shadow-inner group-hover:scale-105 transition-transform",
|
|
1041
|
-
isInbound ? "bg-primary/20 text-primary border border-primary/20" : "bg-
|
|
1041
|
+
isInbound ? "bg-primary/20 text-primary border border-primary/20" : "bg-accent text-muted-foreground border border-border"
|
|
1042
1042
|
),
|
|
1043
1043
|
children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "material-symbols-outlined text-[20px]", children: isInbound ? "arrow_downward" : "arrow_outward" })
|
|
1044
1044
|
}
|
|
@@ -1048,7 +1048,7 @@ function TransactionCard({
|
|
|
1048
1048
|
"span",
|
|
1049
1049
|
{
|
|
1050
1050
|
className: cn(
|
|
1051
|
-
"font-bold text-sm text-
|
|
1051
|
+
"font-bold text-sm text-foreground tracking-wide",
|
|
1052
1052
|
onClick && "group-hover:text-primary transition-colors"
|
|
1053
1053
|
),
|
|
1054
1054
|
children: isInbound ? "Received" : "Sent"
|
|
@@ -1056,7 +1056,7 @@ function TransactionCard({
|
|
|
1056
1056
|
),
|
|
1057
1057
|
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex items-center gap-2 mt-1", children: [
|
|
1058
1058
|
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(StatusBadge, { status, className: "text-xxs px-1.5 py-0.5" }),
|
|
1059
|
-
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "text-tiny text-
|
|
1059
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "text-tiny text-muted-foreground font-medium tracking-wide", children: formatDate(timestamp) })
|
|
1060
1060
|
] })
|
|
1061
1061
|
] })
|
|
1062
1062
|
] }),
|
|
@@ -1066,7 +1066,7 @@ function TransactionCard({
|
|
|
1066
1066
|
{
|
|
1067
1067
|
className: cn(
|
|
1068
1068
|
"font-bold text-base tracking-tight group-hover:opacity-90 transition-opacity",
|
|
1069
|
-
isInbound ? "text-primary" : "text-
|
|
1069
|
+
isInbound ? "text-primary" : "text-foreground"
|
|
1070
1070
|
),
|
|
1071
1071
|
children: [
|
|
1072
1072
|
isInbound ? "+" : "-",
|
|
@@ -1074,7 +1074,7 @@ function TransactionCard({
|
|
|
1074
1074
|
]
|
|
1075
1075
|
}
|
|
1076
1076
|
),
|
|
1077
|
-
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { className: "text-tiny text-
|
|
1077
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { className: "text-tiny text-muted-foreground font-medium tracking-wide uppercase mt-0.5", children: unit })
|
|
1078
1078
|
] })
|
|
1079
1079
|
]
|
|
1080
1080
|
}
|
|
@@ -1085,14 +1085,14 @@ function TransactionCard({
|
|
|
1085
1085
|
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1086
1086
|
function PageHeader({ left, title, right, borderClassName = "border-border" }) {
|
|
1087
1087
|
if (!title) {
|
|
1088
|
-
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("header", { className: `sticky top-0 z-20 flex items-center border-b bg-background
|
|
1088
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("header", { className: `sticky top-0 z-20 flex items-center border-b bg-background/95 px-4 py-3.5 backdrop-blur ${borderClassName}`, children: [
|
|
1089
1089
|
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "flex shrink-0 items-center", children: left }),
|
|
1090
1090
|
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "ml-auto flex min-w-0 items-center justify-end gap-2", children: right })
|
|
1091
1091
|
] });
|
|
1092
1092
|
}
|
|
1093
|
-
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("header", { className: `sticky top-0 z-20 flex items-center border-b bg-background
|
|
1093
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("header", { className: `sticky top-0 z-20 flex items-center border-b bg-background/95 px-4 py-3.5 backdrop-blur ${borderClassName}`, children: [
|
|
1094
1094
|
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "flex min-w-0 flex-1 items-center", children: left }),
|
|
1095
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "font-bold text-body text-
|
|
1095
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "font-bold text-body text-foreground shrink-0", children: title }),
|
|
1096
1096
|
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "flex min-w-0 flex-1 items-center justify-end gap-2", children: right })
|
|
1097
1097
|
] });
|
|
1098
1098
|
}
|
|
@@ -1116,8 +1116,8 @@ function SettingItem({
|
|
|
1116
1116
|
"div",
|
|
1117
1117
|
{
|
|
1118
1118
|
className: cn(
|
|
1119
|
-
"p-5 rounded-2xl
|
|
1120
|
-
isClickable && "cursor-pointer hover:bg-
|
|
1119
|
+
"p-5 rounded-2xl bg-card border border-border transition-all duration-200",
|
|
1120
|
+
isClickable && "cursor-pointer hover:bg-accent active:scale-[0.98]",
|
|
1121
1121
|
className
|
|
1122
1122
|
),
|
|
1123
1123
|
onClick,
|
|
@@ -1127,20 +1127,20 @@ function SettingItem({
|
|
|
1127
1127
|
"div",
|
|
1128
1128
|
{
|
|
1129
1129
|
className: cn(
|
|
1130
|
-
"flex-shrink-0 size-10 rounded-xl flex items-center justify-center bg-
|
|
1130
|
+
"flex-shrink-0 size-10 rounded-xl flex items-center justify-center bg-muted border border-border",
|
|
1131
1131
|
iconColor
|
|
1132
1132
|
),
|
|
1133
1133
|
children: iconSrc ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("img", { src: iconSrc, alt: iconAlt ?? title, className: "size-5 object-contain" }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "material-symbols-outlined text-[20px]", children: icon })
|
|
1134
1134
|
}
|
|
1135
1135
|
),
|
|
1136
1136
|
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex flex-col flex-1 min-w-0", children: [
|
|
1137
|
-
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "font-bold text-body text-
|
|
1138
|
-
description && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "text-sm text-
|
|
1137
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "font-bold text-body text-foreground tracking-wide", children: title }),
|
|
1138
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "text-sm text-muted-foreground mt-0.5 font-medium", children: description })
|
|
1139
1139
|
] })
|
|
1140
1140
|
] }),
|
|
1141
1141
|
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center gap-2 flex-shrink-0", children: [
|
|
1142
|
-
value && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "text-xs text-
|
|
1143
|
-
showChevron && isClickable && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "material-symbols-outlined text-[16px] text-
|
|
1142
|
+
value && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "text-xs text-muted-foreground font-mono", children: value }),
|
|
1143
|
+
showChevron && isClickable && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "material-symbols-outlined text-[16px] text-muted-foreground", children: "chevron_right" })
|
|
1144
1144
|
] })
|
|
1145
1145
|
] })
|
|
1146
1146
|
}
|
|
@@ -1150,7 +1150,13 @@ function SettingItem({
|
|
|
1150
1150
|
// src/web/components/section-label.tsx
|
|
1151
1151
|
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
1152
1152
|
function SectionLabel({ children, className }) {
|
|
1153
|
-
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1153
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1154
|
+
"span",
|
|
1155
|
+
{
|
|
1156
|
+
className: cn("text-xxs font-black uppercase tracking-[0.22em] text-muted-foreground", className),
|
|
1157
|
+
children
|
|
1158
|
+
}
|
|
1159
|
+
);
|
|
1154
1160
|
}
|
|
1155
1161
|
|
|
1156
1162
|
// src/web/components/alert-banner.tsx
|
|
@@ -1201,10 +1207,10 @@ var ErrorBoundary = class extends import_react4.Component {
|
|
|
1201
1207
|
}
|
|
1202
1208
|
render() {
|
|
1203
1209
|
if (this.state.hasError) {
|
|
1204
|
-
return this.props.fallback ?? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "min-h-screen bg-background
|
|
1210
|
+
return this.props.fallback ?? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "min-h-screen bg-background text-foreground font-display flex flex-col items-center justify-center p-6 gap-4", children: [
|
|
1205
1211
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "material-symbols-outlined text-red-400 text-[48px]", children: "error" }),
|
|
1206
1212
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("h2", { className: "text-lg font-bold", children: "Something went wrong" }),
|
|
1207
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "text-sm text-
|
|
1213
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "text-sm text-muted-foreground text-center", children: this.state.error?.message ?? "An unexpected error occurred." }),
|
|
1208
1214
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1209
1215
|
"button",
|
|
1210
1216
|
{
|
|
@@ -1212,7 +1218,7 @@ var ErrorBoundary = class extends import_react4.Component {
|
|
|
1212
1218
|
this.setState({ hasError: false, error: null });
|
|
1213
1219
|
this.props.onReset?.();
|
|
1214
1220
|
},
|
|
1215
|
-
className: "px-6 py-3 rounded-xl bg-primary text-
|
|
1221
|
+
className: "px-6 py-3 rounded-xl bg-primary text-primary-foreground font-bold hover:bg-primary/90 transition-all",
|
|
1216
1222
|
children: "Try Again"
|
|
1217
1223
|
}
|
|
1218
1224
|
)
|
package/dist/web/index.js
CHANGED
|
@@ -17,16 +17,16 @@ var buttonVariants = cva(
|
|
|
17
17
|
{
|
|
18
18
|
variants: {
|
|
19
19
|
variant: {
|
|
20
|
-
default: "bg-primary text-primary-foreground hover:bg-primary/90
|
|
20
|
+
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
21
21
|
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
22
|
-
outline: "border border-border bg-transparent hover:bg-accent hover:text-accent-foreground
|
|
22
|
+
outline: "border border-border bg-transparent hover:bg-accent hover:text-accent-foreground",
|
|
23
23
|
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
24
|
-
ghost: "hover:bg-
|
|
24
|
+
ghost: "hover:bg-accent hover:text-foreground",
|
|
25
25
|
link: "text-primary underline-offset-4 hover:underline",
|
|
26
|
-
glow: "bg-primary text-primary-foreground shadow-
|
|
27
|
-
surface: "bg-card text-card-foreground border border-border hover:bg-accent
|
|
28
|
-
cta: "w-full bg-primary hover:bg-primary
|
|
29
|
-
"cta-gradient": "w-full bg-gradient-to-r from-primary to-primary
|
|
26
|
+
glow: "bg-primary text-primary-foreground shadow-md",
|
|
27
|
+
surface: "bg-card text-card-foreground border border-border hover:bg-accent",
|
|
28
|
+
cta: "w-full bg-primary hover:bg-primary/90 text-primary-foreground font-bold rounded-2xl shadow-md disabled:opacity-50 disabled:cursor-not-allowed disabled:shadow-none",
|
|
29
|
+
"cta-gradient": "w-full bg-gradient-to-r from-primary to-primary/80 text-primary-foreground font-extrabold rounded-2xl shadow-lg hover:opacity-90 hover:-translate-y-0.5 active:translate-y-0 active:opacity-100 disabled:opacity-40 disabled:shadow-none disabled:cursor-not-allowed disabled:bg-accent disabled:text-muted-foreground",
|
|
30
30
|
"danger-subtle": "w-full bg-red-500/10 border border-red-500/20 text-red-400 font-bold rounded-xl hover:bg-red-500/20"
|
|
31
31
|
},
|
|
32
32
|
size: {
|
|
@@ -117,7 +117,7 @@ var Input = React3.forwardRef(
|
|
|
117
117
|
{
|
|
118
118
|
type,
|
|
119
119
|
className: cn(
|
|
120
|
-
"flex h-12 w-full rounded-xl border border-border bg-card px-4 py-3 text-base ring-offset-background transition-all file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-
|
|
120
|
+
"flex h-12 w-full rounded-xl border border-border bg-card px-4 py-3 text-base ring-offset-background transition-all file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:border-ring disabled:cursor-not-allowed disabled:opacity-50",
|
|
121
121
|
className
|
|
122
122
|
),
|
|
123
123
|
ref,
|
|
@@ -312,8 +312,8 @@ var TabsTrigger = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
312
312
|
ref,
|
|
313
313
|
className: cn(
|
|
314
314
|
"inline-flex items-center justify-center whitespace-nowrap rounded-lg px-4 py-2 text-sm font-semibold ring-offset-background transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
|
|
315
|
-
"hover:text-foreground hover:bg-
|
|
316
|
-
"data-[state=active]:bg-primary data-[state=active]:text-primary-foreground
|
|
315
|
+
"hover:text-foreground hover:bg-accent",
|
|
316
|
+
"data-[state=active]:bg-primary data-[state=active]:text-primary-foreground",
|
|
317
317
|
className
|
|
318
318
|
),
|
|
319
319
|
...props
|
|
@@ -374,7 +374,7 @@ var toastVariants = cva3(
|
|
|
374
374
|
{
|
|
375
375
|
variants: {
|
|
376
376
|
variant: {
|
|
377
|
-
default: "border-
|
|
377
|
+
default: "border-border bg-card/95 text-foreground",
|
|
378
378
|
destructive: "border-red-500/20 bg-red-500/10 text-red-400"
|
|
379
379
|
}
|
|
380
380
|
},
|
|
@@ -411,7 +411,7 @@ var ToastClose = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
411
411
|
{
|
|
412
412
|
ref,
|
|
413
413
|
className: cn(
|
|
414
|
-
"absolute right-2 top-2 rounded-full p-1 text-
|
|
414
|
+
"absolute right-2 top-2 rounded-full p-1 text-muted-foreground opacity-100 transition-all hover:text-foreground hover:bg-accent focus:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:hover:bg-red-500/20 group-[.destructive]:focus:ring-red-400",
|
|
415
415
|
className
|
|
416
416
|
),
|
|
417
417
|
"toast-close": "",
|
|
@@ -424,7 +424,7 @@ var ToastTitle = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
424
424
|
ToastPrimitives.Title,
|
|
425
425
|
{
|
|
426
426
|
ref,
|
|
427
|
-
className: cn("text-sm font-semibold text-
|
|
427
|
+
className: cn("text-sm font-semibold text-foreground", className),
|
|
428
428
|
...props
|
|
429
429
|
}
|
|
430
430
|
));
|
|
@@ -433,7 +433,7 @@ var ToastDescription = React7.forwardRef(({ className, ...props }, ref) => /* @_
|
|
|
433
433
|
ToastPrimitives.Description,
|
|
434
434
|
{
|
|
435
435
|
ref,
|
|
436
|
-
className: cn("text-xs text-
|
|
436
|
+
className: cn("text-xs text-muted-foreground", className),
|
|
437
437
|
...props
|
|
438
438
|
}
|
|
439
439
|
));
|
|
@@ -558,7 +558,7 @@ function ToastWithProgress({ id, title, description, action, duration = 4e3, var
|
|
|
558
558
|
if (variant === "destructive") {
|
|
559
559
|
return /* @__PURE__ */ jsx9(Icon, { name: "error", size: "md", className: "text-red-400" });
|
|
560
560
|
}
|
|
561
|
-
return /* @__PURE__ */ jsx9(Icon, { name: "check_circle", size: "md", className: "text-
|
|
561
|
+
return /* @__PURE__ */ jsx9(Icon, { name: "check_circle", size: "md", className: "text-foreground" });
|
|
562
562
|
};
|
|
563
563
|
return /* @__PURE__ */ jsxs2(Toast, { ...props, variant, children: [
|
|
564
564
|
/* @__PURE__ */ jsxs2("div", { className: "flex items-start gap-3 flex-1", children: [
|
|
@@ -855,7 +855,7 @@ function AssetIcon({ ticker, logoUri, cdnBaseUrl, size = 40, className }) {
|
|
|
855
855
|
"div",
|
|
856
856
|
{
|
|
857
857
|
className: cn(
|
|
858
|
-
"rounded-full flex items-center justify-center font-bold text-
|
|
858
|
+
"rounded-full flex items-center justify-center font-bold text-foreground shadow-inner border border-border",
|
|
859
859
|
bgColor,
|
|
860
860
|
className
|
|
861
861
|
),
|
|
@@ -882,8 +882,8 @@ function AssetCard({
|
|
|
882
882
|
"div",
|
|
883
883
|
{
|
|
884
884
|
className: cn(
|
|
885
|
-
"p-4 rounded-card bg-background
|
|
886
|
-
onClick && "cursor-pointer hover:border-primary/40
|
|
885
|
+
"p-4 rounded-card bg-background/40 backdrop-blur-xl border border-border transition-all shadow-sm relative overflow-hidden group",
|
|
886
|
+
onClick && "cursor-pointer hover:border-primary/40 active:scale-[0.98]",
|
|
887
887
|
className
|
|
888
888
|
),
|
|
889
889
|
onClick,
|
|
@@ -905,7 +905,7 @@ function AssetCard({
|
|
|
905
905
|
"span",
|
|
906
906
|
{
|
|
907
907
|
className: cn(
|
|
908
|
-
"font-bold text-base leading-tight tracking-wide text-
|
|
908
|
+
"font-bold text-base leading-tight tracking-wide text-foreground",
|
|
909
909
|
onClick && "group-hover:text-primary transition-colors"
|
|
910
910
|
),
|
|
911
911
|
children: name
|
|
@@ -915,8 +915,8 @@ function AssetCard({
|
|
|
915
915
|
] })
|
|
916
916
|
] }),
|
|
917
917
|
/* @__PURE__ */ jsxs5("div", { className: "text-right", children: [
|
|
918
|
-
/* @__PURE__ */ jsx13("p", { className: "font-bold text-base tracking-tight text-
|
|
919
|
-
/* @__PURE__ */ jsx13("p", { className: "text-tiny text-
|
|
918
|
+
/* @__PURE__ */ jsx13("p", { className: "font-bold text-base tracking-tight text-foreground group-hover:opacity-90 transition-colors", children: shown }),
|
|
919
|
+
/* @__PURE__ */ jsx13("p", { className: "text-tiny text-muted-foreground font-medium tracking-wide uppercase mt-0.5", children: ticker })
|
|
920
920
|
] })
|
|
921
921
|
] })
|
|
922
922
|
]
|
|
@@ -941,8 +941,8 @@ function TransactionCard({
|
|
|
941
941
|
"div",
|
|
942
942
|
{
|
|
943
943
|
className: cn(
|
|
944
|
-
"p-4 rounded-card bg-background
|
|
945
|
-
onClick && "cursor-pointer hover:border-primary/40
|
|
944
|
+
"p-4 rounded-card bg-background/40 backdrop-blur-xl border border-border flex items-center justify-between transition-all shadow-sm relative overflow-hidden group",
|
|
945
|
+
onClick && "cursor-pointer hover:border-primary/40 active:scale-[0.98]",
|
|
946
946
|
className
|
|
947
947
|
),
|
|
948
948
|
onClick,
|
|
@@ -954,7 +954,7 @@ function TransactionCard({
|
|
|
954
954
|
{
|
|
955
955
|
className: cn(
|
|
956
956
|
"size-11 rounded-full flex items-center justify-center shadow-inner group-hover:scale-105 transition-transform",
|
|
957
|
-
isInbound ? "bg-primary/20 text-primary border border-primary/20" : "bg-
|
|
957
|
+
isInbound ? "bg-primary/20 text-primary border border-primary/20" : "bg-accent text-muted-foreground border border-border"
|
|
958
958
|
),
|
|
959
959
|
children: /* @__PURE__ */ jsx14("span", { className: "material-symbols-outlined text-[20px]", children: isInbound ? "arrow_downward" : "arrow_outward" })
|
|
960
960
|
}
|
|
@@ -964,7 +964,7 @@ function TransactionCard({
|
|
|
964
964
|
"span",
|
|
965
965
|
{
|
|
966
966
|
className: cn(
|
|
967
|
-
"font-bold text-sm text-
|
|
967
|
+
"font-bold text-sm text-foreground tracking-wide",
|
|
968
968
|
onClick && "group-hover:text-primary transition-colors"
|
|
969
969
|
),
|
|
970
970
|
children: isInbound ? "Received" : "Sent"
|
|
@@ -972,7 +972,7 @@ function TransactionCard({
|
|
|
972
972
|
),
|
|
973
973
|
/* @__PURE__ */ jsxs6("div", { className: "flex items-center gap-2 mt-1", children: [
|
|
974
974
|
/* @__PURE__ */ jsx14(StatusBadge, { status, className: "text-xxs px-1.5 py-0.5" }),
|
|
975
|
-
/* @__PURE__ */ jsx14("span", { className: "text-tiny text-
|
|
975
|
+
/* @__PURE__ */ jsx14("span", { className: "text-tiny text-muted-foreground font-medium tracking-wide", children: formatDate(timestamp) })
|
|
976
976
|
] })
|
|
977
977
|
] })
|
|
978
978
|
] }),
|
|
@@ -982,7 +982,7 @@ function TransactionCard({
|
|
|
982
982
|
{
|
|
983
983
|
className: cn(
|
|
984
984
|
"font-bold text-base tracking-tight group-hover:opacity-90 transition-opacity",
|
|
985
|
-
isInbound ? "text-primary" : "text-
|
|
985
|
+
isInbound ? "text-primary" : "text-foreground"
|
|
986
986
|
),
|
|
987
987
|
children: [
|
|
988
988
|
isInbound ? "+" : "-",
|
|
@@ -990,7 +990,7 @@ function TransactionCard({
|
|
|
990
990
|
]
|
|
991
991
|
}
|
|
992
992
|
),
|
|
993
|
-
/* @__PURE__ */ jsx14("p", { className: "text-tiny text-
|
|
993
|
+
/* @__PURE__ */ jsx14("p", { className: "text-tiny text-muted-foreground font-medium tracking-wide uppercase mt-0.5", children: unit })
|
|
994
994
|
] })
|
|
995
995
|
]
|
|
996
996
|
}
|
|
@@ -1001,14 +1001,14 @@ function TransactionCard({
|
|
|
1001
1001
|
import { jsx as jsx15, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1002
1002
|
function PageHeader({ left, title, right, borderClassName = "border-border" }) {
|
|
1003
1003
|
if (!title) {
|
|
1004
|
-
return /* @__PURE__ */ jsxs7("header", { className: `sticky top-0 z-20 flex items-center border-b bg-background
|
|
1004
|
+
return /* @__PURE__ */ jsxs7("header", { className: `sticky top-0 z-20 flex items-center border-b bg-background/95 px-4 py-3.5 backdrop-blur ${borderClassName}`, children: [
|
|
1005
1005
|
/* @__PURE__ */ jsx15("div", { className: "flex shrink-0 items-center", children: left }),
|
|
1006
1006
|
/* @__PURE__ */ jsx15("div", { className: "ml-auto flex min-w-0 items-center justify-end gap-2", children: right })
|
|
1007
1007
|
] });
|
|
1008
1008
|
}
|
|
1009
|
-
return /* @__PURE__ */ jsxs7("header", { className: `sticky top-0 z-20 flex items-center border-b bg-background
|
|
1009
|
+
return /* @__PURE__ */ jsxs7("header", { className: `sticky top-0 z-20 flex items-center border-b bg-background/95 px-4 py-3.5 backdrop-blur ${borderClassName}`, children: [
|
|
1010
1010
|
/* @__PURE__ */ jsx15("div", { className: "flex min-w-0 flex-1 items-center", children: left }),
|
|
1011
|
-
/* @__PURE__ */ jsx15("span", { className: "font-bold text-body text-
|
|
1011
|
+
/* @__PURE__ */ jsx15("span", { className: "font-bold text-body text-foreground shrink-0", children: title }),
|
|
1012
1012
|
/* @__PURE__ */ jsx15("div", { className: "flex min-w-0 flex-1 items-center justify-end gap-2", children: right })
|
|
1013
1013
|
] });
|
|
1014
1014
|
}
|
|
@@ -1032,8 +1032,8 @@ function SettingItem({
|
|
|
1032
1032
|
"div",
|
|
1033
1033
|
{
|
|
1034
1034
|
className: cn(
|
|
1035
|
-
"p-5 rounded-2xl
|
|
1036
|
-
isClickable && "cursor-pointer hover:bg-
|
|
1035
|
+
"p-5 rounded-2xl bg-card border border-border transition-all duration-200",
|
|
1036
|
+
isClickable && "cursor-pointer hover:bg-accent active:scale-[0.98]",
|
|
1037
1037
|
className
|
|
1038
1038
|
),
|
|
1039
1039
|
onClick,
|
|
@@ -1043,20 +1043,20 @@ function SettingItem({
|
|
|
1043
1043
|
"div",
|
|
1044
1044
|
{
|
|
1045
1045
|
className: cn(
|
|
1046
|
-
"flex-shrink-0 size-10 rounded-xl flex items-center justify-center bg-
|
|
1046
|
+
"flex-shrink-0 size-10 rounded-xl flex items-center justify-center bg-muted border border-border",
|
|
1047
1047
|
iconColor
|
|
1048
1048
|
),
|
|
1049
1049
|
children: iconSrc ? /* @__PURE__ */ jsx16("img", { src: iconSrc, alt: iconAlt ?? title, className: "size-5 object-contain" }) : /* @__PURE__ */ jsx16("span", { className: "material-symbols-outlined text-[20px]", children: icon })
|
|
1050
1050
|
}
|
|
1051
1051
|
),
|
|
1052
1052
|
/* @__PURE__ */ jsxs8("div", { className: "flex flex-col flex-1 min-w-0", children: [
|
|
1053
|
-
/* @__PURE__ */ jsx16("span", { className: "font-bold text-body text-
|
|
1054
|
-
description && /* @__PURE__ */ jsx16("span", { className: "text-sm text-
|
|
1053
|
+
/* @__PURE__ */ jsx16("span", { className: "font-bold text-body text-foreground tracking-wide", children: title }),
|
|
1054
|
+
description && /* @__PURE__ */ jsx16("span", { className: "text-sm text-muted-foreground mt-0.5 font-medium", children: description })
|
|
1055
1055
|
] })
|
|
1056
1056
|
] }),
|
|
1057
1057
|
/* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2 flex-shrink-0", children: [
|
|
1058
|
-
value && /* @__PURE__ */ jsx16("span", { className: "text-xs text-
|
|
1059
|
-
showChevron && isClickable && /* @__PURE__ */ jsx16("span", { className: "material-symbols-outlined text-[16px] text-
|
|
1058
|
+
value && /* @__PURE__ */ jsx16("span", { className: "text-xs text-muted-foreground font-mono", children: value }),
|
|
1059
|
+
showChevron && isClickable && /* @__PURE__ */ jsx16("span", { className: "material-symbols-outlined text-[16px] text-muted-foreground", children: "chevron_right" })
|
|
1060
1060
|
] })
|
|
1061
1061
|
] })
|
|
1062
1062
|
}
|
|
@@ -1066,7 +1066,13 @@ function SettingItem({
|
|
|
1066
1066
|
// src/web/components/section-label.tsx
|
|
1067
1067
|
import { jsx as jsx17 } from "react/jsx-runtime";
|
|
1068
1068
|
function SectionLabel({ children, className }) {
|
|
1069
|
-
return /* @__PURE__ */ jsx17(
|
|
1069
|
+
return /* @__PURE__ */ jsx17(
|
|
1070
|
+
"span",
|
|
1071
|
+
{
|
|
1072
|
+
className: cn("text-xxs font-black uppercase tracking-[0.22em] text-muted-foreground", className),
|
|
1073
|
+
children
|
|
1074
|
+
}
|
|
1075
|
+
);
|
|
1070
1076
|
}
|
|
1071
1077
|
|
|
1072
1078
|
// src/web/components/alert-banner.tsx
|
|
@@ -1117,10 +1123,10 @@ var ErrorBoundary = class extends Component {
|
|
|
1117
1123
|
}
|
|
1118
1124
|
render() {
|
|
1119
1125
|
if (this.state.hasError) {
|
|
1120
|
-
return this.props.fallback ?? /* @__PURE__ */ jsxs10("div", { className: "min-h-screen bg-background
|
|
1126
|
+
return this.props.fallback ?? /* @__PURE__ */ jsxs10("div", { className: "min-h-screen bg-background text-foreground font-display flex flex-col items-center justify-center p-6 gap-4", children: [
|
|
1121
1127
|
/* @__PURE__ */ jsx19("span", { className: "material-symbols-outlined text-red-400 text-[48px]", children: "error" }),
|
|
1122
1128
|
/* @__PURE__ */ jsx19("h2", { className: "text-lg font-bold", children: "Something went wrong" }),
|
|
1123
|
-
/* @__PURE__ */ jsx19("p", { className: "text-sm text-
|
|
1129
|
+
/* @__PURE__ */ jsx19("p", { className: "text-sm text-muted-foreground text-center", children: this.state.error?.message ?? "An unexpected error occurred." }),
|
|
1124
1130
|
/* @__PURE__ */ jsx19(
|
|
1125
1131
|
"button",
|
|
1126
1132
|
{
|
|
@@ -1128,7 +1134,7 @@ var ErrorBoundary = class extends Component {
|
|
|
1128
1134
|
this.setState({ hasError: false, error: null });
|
|
1129
1135
|
this.props.onReset?.();
|
|
1130
1136
|
},
|
|
1131
|
-
className: "px-6 py-3 rounded-xl bg-primary text-
|
|
1137
|
+
className: "px-6 py-3 rounded-xl bg-primary text-primary-foreground font-bold hover:bg-primary/90 transition-all",
|
|
1132
1138
|
children: "Try Again"
|
|
1133
1139
|
}
|
|
1134
1140
|
)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kaleido-ui",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "KaleidoSwap shared UI library — design tokens, web components (Tailwind + Radix), and React Native components extending WDK UI Kit",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -39,6 +39,8 @@
|
|
|
39
39
|
"scripts": {
|
|
40
40
|
"build": "tsup && mkdir -p dist/css && cp src/css/kaleido-ui.css dist/css/kaleido-ui.css",
|
|
41
41
|
"dev": "tsup --watch",
|
|
42
|
+
"showcase": "vite --config showcase/vite.config.ts",
|
|
43
|
+
"showcase:build": "vite build --config showcase/vite.config.ts",
|
|
42
44
|
"type-check": "tsc --noEmit",
|
|
43
45
|
"clean": "rm -rf dist"
|
|
44
46
|
},
|
|
@@ -96,14 +98,22 @@
|
|
|
96
98
|
"@radix-ui/react-slot": "^1.2.4",
|
|
97
99
|
"@radix-ui/react-tabs": "^1.1.13",
|
|
98
100
|
"@radix-ui/react-toast": "^1.2.15",
|
|
101
|
+
"@tailwindcss/vite": "^4.2.4",
|
|
99
102
|
"@types/react": "^19.2.14",
|
|
100
103
|
"@types/react-dom": "^19.2.3",
|
|
101
104
|
"@types/react-native": "^0.72.8",
|
|
105
|
+
"@vitejs/plugin-react": "^4.3.0",
|
|
106
|
+
"autoprefixer": "^10.5.0",
|
|
102
107
|
"class-variance-authority": "^0.7.1",
|
|
103
108
|
"clsx": "^2.1.1",
|
|
109
|
+
"postcss": "^8.4.49",
|
|
110
|
+
"react": "^19.0.0",
|
|
111
|
+
"react-dom": "^19.0.0",
|
|
104
112
|
"tailwind-merge": "^2.6.1",
|
|
113
|
+
"tailwindcss": "^4.2.4",
|
|
105
114
|
"tsup": "^8.0.0",
|
|
106
|
-
"typescript": "^5.9.0"
|
|
115
|
+
"typescript": "^5.9.0",
|
|
116
|
+
"vite": "^5.4.11"
|
|
107
117
|
},
|
|
108
118
|
"repository": {
|
|
109
119
|
"type": "git",
|