kaleido-ui 0.1.20 → 0.1.22
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/web/index.cjs +80 -45
- package/dist/web/index.d.cts +3 -1
- package/dist/web/index.d.ts +3 -1
- package/dist/web/index.js +80 -45
- package/package.json +1 -1
package/dist/web/index.cjs
CHANGED
|
@@ -1146,29 +1146,55 @@ function NetworkBadge({
|
|
|
1146
1146
|
const content = children ?? (shouldShowLabel ? label : null);
|
|
1147
1147
|
const chipSize = size === "sm" ? "size-6" : "size-8";
|
|
1148
1148
|
const imageSize = size === "sm" ? "size-3.5" : "size-icon-lg";
|
|
1149
|
-
const renderGlyph = (className2) =>
|
|
1150
|
-
"
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1149
|
+
const renderGlyph = (className2) => {
|
|
1150
|
+
if (network === "L1") {
|
|
1151
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1152
|
+
"span",
|
|
1153
|
+
{
|
|
1154
|
+
className: cn("material-symbols-outlined leading-none", color, className2),
|
|
1155
|
+
style: { fontSize: size === "sm" ? 12 : 16 },
|
|
1156
|
+
"aria-hidden": true,
|
|
1157
|
+
children: "link"
|
|
1158
|
+
}
|
|
1159
|
+
);
|
|
1156
1160
|
}
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1161
|
+
if (network === "RGB-LN") {
|
|
1162
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "inline-flex items-center gap-0.5", children: [
|
|
1163
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1164
|
+
"img",
|
|
1165
|
+
{
|
|
1166
|
+
src: `${iconBasePath}/rgb/rgb-logo.svg`,
|
|
1167
|
+
alt: "RGB",
|
|
1168
|
+
className: cn(className2, "object-contain", defaultIconClassName, iconClassName)
|
|
1169
|
+
}
|
|
1170
|
+
),
|
|
1171
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1172
|
+
"img",
|
|
1173
|
+
{
|
|
1174
|
+
src: `${iconBasePath}/lightning/lightning.svg`,
|
|
1175
|
+
alt: "Lightning",
|
|
1176
|
+
className: cn(className2, "object-contain", iconClassName)
|
|
1177
|
+
}
|
|
1178
|
+
)
|
|
1179
|
+
] });
|
|
1163
1180
|
}
|
|
1164
|
-
|
|
1181
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1182
|
+
"img",
|
|
1183
|
+
{
|
|
1184
|
+
src: icon,
|
|
1185
|
+
alt: network,
|
|
1186
|
+
className: cn(className2, "object-contain", defaultIconClassName, iconClassName)
|
|
1187
|
+
}
|
|
1188
|
+
);
|
|
1189
|
+
};
|
|
1165
1190
|
if (!content) {
|
|
1191
|
+
const isDualGlyph = network === "RGB-LN";
|
|
1166
1192
|
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1167
1193
|
"span",
|
|
1168
1194
|
{
|
|
1169
1195
|
className: cn(
|
|
1170
1196
|
"flex items-center justify-center rounded-full shadow-inner",
|
|
1171
|
-
chipSize,
|
|
1197
|
+
isDualGlyph ? size === "sm" ? "h-6 px-1.5" : "h-8 px-2" : chipSize,
|
|
1172
1198
|
iconBg,
|
|
1173
1199
|
className
|
|
1174
1200
|
),
|
|
@@ -3070,9 +3096,14 @@ function AssetSelector({
|
|
|
3070
3096
|
" available"
|
|
3071
3097
|
] })
|
|
3072
3098
|
] }),
|
|
3073
|
-
selected && /*
|
|
3099
|
+
selected && /* Network-coloured chip — uses the existing NetworkBadge
|
|
3100
|
+
so the asset's network color carries through (matches
|
|
3101
|
+
the showcase / wallet main page styling). When the
|
|
3102
|
+
asset has no network we fall back to a neutral pill. */
|
|
3103
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "flex items-center gap-2 rounded-full border border-white/10 bg-white/5 px-2.5 py-1", children: [
|
|
3074
3104
|
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(AssetIcon, { ticker: selected.ticker, logoUri: selected.icon, size: 18 }),
|
|
3075
|
-
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "text-tiny font-semibold text-
|
|
3105
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "text-tiny font-semibold text-white", children: selected.ticker }),
|
|
3106
|
+
selected.network && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(NetworkBadge, { network: selected.network, showLabel: true, className: "py-[1px]" })
|
|
3076
3107
|
] })
|
|
3077
3108
|
] }) }),
|
|
3078
3109
|
/* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "flex-shrink-0 border-b border-white/[0.08] px-4 py-3", children: [
|
|
@@ -3093,7 +3124,7 @@ function AssetSelector({
|
|
|
3093
3124
|
value: search,
|
|
3094
3125
|
onChange: (event) => setSearch(event.target.value),
|
|
3095
3126
|
placeholder: "Search...",
|
|
3096
|
-
className: "h-11 w-full rounded-2xl border bg-black/20 pl-10 pr-3 text-sm text-white placeholder:text-white/25 focus:border-primary/50 focus:outline-none"
|
|
3127
|
+
className: "h-11 w-full rounded-2xl border border-transparent bg-black/20 pl-10 pr-3 text-sm text-white placeholder:text-white/25 focus:border-primary/50 focus:outline-none"
|
|
3097
3128
|
}
|
|
3098
3129
|
)
|
|
3099
3130
|
] }),
|
|
@@ -3116,7 +3147,7 @@ function AssetSelector({
|
|
|
3116
3147
|
);
|
|
3117
3148
|
}) })
|
|
3118
3149
|
] }),
|
|
3119
|
-
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(ScrollArea, { className: "min-h-0", viewportClassName: "px-2 py-2", children: filtered.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "flex flex-col items-center gap-2 px-4 py-10 text-center text-sm text-white/30", children: [
|
|
3150
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(ScrollArea, { className: "min-h-0", viewportClassName: "px-2 py-2 pb-6", children: filtered.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "flex flex-col items-center gap-2 px-4 py-10 text-center text-sm text-white/30", children: [
|
|
3120
3151
|
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Icon2, { name: "search", size: "md", className: "opacity-40" }),
|
|
3121
3152
|
/* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("span", { children: [
|
|
3122
3153
|
"No results",
|
|
@@ -3293,6 +3324,7 @@ function SwapInputCard({
|
|
|
3293
3324
|
quoteExpiresUrgent = false,
|
|
3294
3325
|
warning,
|
|
3295
3326
|
submitLabel,
|
|
3327
|
+
submitIcon,
|
|
3296
3328
|
submitVariant = "cta",
|
|
3297
3329
|
submitDisabled = false,
|
|
3298
3330
|
onFromTickerChange,
|
|
@@ -3306,7 +3338,26 @@ function SwapInputCard({
|
|
|
3306
3338
|
return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [
|
|
3307
3339
|
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "relative mb-3 flex flex-col rounded-3xl bg-white/[0.03] shadow-2xl shadow-black/40 backdrop-blur-2xl transition-all duration-300", children: [
|
|
3308
3340
|
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "p-3.5 pb-4", children: [
|
|
3309
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.
|
|
3341
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "mb-2 flex items-center justify-between gap-2", children: [
|
|
3342
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", { className: "text-xs font-bold uppercase tracking-widest text-white/60", children: "You Pay" }),
|
|
3343
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "flex items-center gap-1", children: PERCENTAGES.map((percent) => /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
|
|
3344
|
+
"button",
|
|
3345
|
+
{
|
|
3346
|
+
type: "button",
|
|
3347
|
+
disabled: percentageDisabled,
|
|
3348
|
+
onClick: () => onPercentageClick(percent),
|
|
3349
|
+
className: cn(
|
|
3350
|
+
"rounded px-1.5 py-0.5 text-xxs font-bold transition-all duration-300 disabled:cursor-not-allowed disabled:opacity-40",
|
|
3351
|
+
selectedPercentage === percent ? "border-primary/50 bg-primary/20 text-primary shadow-sm" : "bg-white/[0.03] text-muted-foreground hover:text-white"
|
|
3352
|
+
),
|
|
3353
|
+
children: [
|
|
3354
|
+
percent,
|
|
3355
|
+
"%"
|
|
3356
|
+
]
|
|
3357
|
+
},
|
|
3358
|
+
percent
|
|
3359
|
+
)) })
|
|
3360
|
+
] }),
|
|
3310
3361
|
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
3311
3362
|
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
3312
3363
|
AssetSelector,
|
|
@@ -3338,44 +3389,25 @@ function SwapInputCard({
|
|
|
3338
3389
|
{
|
|
3339
3390
|
type: "button",
|
|
3340
3391
|
onClick: onToggleFromUnit,
|
|
3341
|
-
className: "mt-0.5 text-right text-xs text-muted-foreground
|
|
3392
|
+
className: "mt-0.5 text-right text-xs text-muted-foreground transition-colors hover:text-primary",
|
|
3342
3393
|
title: "Tap to switch unit",
|
|
3343
3394
|
children: fromUnitLabel
|
|
3344
3395
|
}
|
|
3345
3396
|
) : /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", { className: "mt-0.5 text-xs text-muted-foreground", children: fromUnitLabel })
|
|
3346
3397
|
] })
|
|
3347
3398
|
] }),
|
|
3348
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.
|
|
3349
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", { className: "text-xxs font-medium text-white/60", children: showMaxText && maxText ? `Max: ${maxText}` : `Available: ${availableText}` }),
|
|
3350
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "flex items-center gap-1", children: PERCENTAGES.map((percent) => /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
|
|
3351
|
-
"button",
|
|
3352
|
-
{
|
|
3353
|
-
type: "button",
|
|
3354
|
-
disabled: percentageDisabled,
|
|
3355
|
-
onClick: () => onPercentageClick(percent),
|
|
3356
|
-
className: cn(
|
|
3357
|
-
"rounded px-1.5 py-0.5 text-xxs font-bold transition-all duration-300 disabled:cursor-not-allowed disabled:opacity-40",
|
|
3358
|
-
selectedPercentage === percent ? "border-primary/50 bg-primary/20 text-primary shadow-sm" : "bg-white/[0.03] text-muted-foreground hover:text-white"
|
|
3359
|
-
),
|
|
3360
|
-
children: [
|
|
3361
|
-
percent,
|
|
3362
|
-
"%"
|
|
3363
|
-
]
|
|
3364
|
-
},
|
|
3365
|
-
percent
|
|
3366
|
-
)) })
|
|
3367
|
-
] })
|
|
3399
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "mt-2 flex items-center justify-between gap-2", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", { className: "text-xxs font-medium text-white/60", children: showMaxText && maxText ? `Max: ${maxText}` : `Available: ${availableText}` }) })
|
|
3368
3400
|
] }),
|
|
3369
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "relative mx-6 flex h-px items-center justify-center bg-white/[0.08]", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
3401
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "relative mx-6 flex h-px items-center justify-center bg-white/[0.08]", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "absolute flex h-11 w-11 items-center justify-center rounded-full bg-card shadow-lg shadow-black/35", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
3370
3402
|
"button",
|
|
3371
3403
|
{
|
|
3372
3404
|
type: "button",
|
|
3373
3405
|
onClick: onFlip,
|
|
3374
3406
|
title: "Flip assets",
|
|
3375
|
-
className: "
|
|
3407
|
+
className: "flex h-11 w-11 items-center justify-center rounded-full bg-card text-primary transition-transform duration-500 hover:rotate-180 hover:bg-accent active:scale-95",
|
|
3376
3408
|
children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Icon2, { name: "swap_vert", size: "md" })
|
|
3377
3409
|
}
|
|
3378
|
-
) }),
|
|
3410
|
+
) }) }),
|
|
3379
3411
|
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "rounded-b-3xl bg-gradient-to-br from-white/[0.01] to-primary/[0.04] p-3.5 pt-4 transition-all duration-300", children: [
|
|
3380
3412
|
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", { className: "mb-2 text-xs font-bold uppercase tracking-widest text-primary/70", children: "You Receive" }),
|
|
3381
3413
|
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
@@ -3434,7 +3466,10 @@ function SwapInputCard({
|
|
|
3434
3466
|
className: "w-full",
|
|
3435
3467
|
onClick: onSubmit,
|
|
3436
3468
|
disabled: submitDisabled,
|
|
3437
|
-
children:
|
|
3469
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("span", { className: "inline-flex items-center justify-center gap-2", children: [
|
|
3470
|
+
submitIcon,
|
|
3471
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { children: submitLabel })
|
|
3472
|
+
] })
|
|
3438
3473
|
}
|
|
3439
3474
|
)
|
|
3440
3475
|
] });
|
package/dist/web/index.d.cts
CHANGED
|
@@ -618,6 +618,8 @@ interface SwapInputCardProps {
|
|
|
618
618
|
quoteExpiresUrgent?: boolean;
|
|
619
619
|
warning?: string | null;
|
|
620
620
|
submitLabel: string;
|
|
621
|
+
/** Optional leading icon for the submit CTA (e.g. a Material-Symbols glyph). */
|
|
622
|
+
submitIcon?: ReactNode;
|
|
621
623
|
submitVariant?: ButtonProps['variant'];
|
|
622
624
|
submitDisabled?: boolean;
|
|
623
625
|
onFromTickerChange: (ticker: string) => void;
|
|
@@ -628,7 +630,7 @@ interface SwapInputCardProps {
|
|
|
628
630
|
onFlip: () => void;
|
|
629
631
|
onSubmit: () => void;
|
|
630
632
|
}
|
|
631
|
-
declare function SwapInputCard({ fromTicker, toTicker, fromInput, fromOptions, toOptions, categories, defaultActiveCategories, availableText, showMaxText, maxText, selectedPercentage, percentageDisabled, fromUnitLabel, fromUnitIsToggle, receiveAmount, receiveUnitLabel, isLoadingQuote, quoteError, quoteRateText, quoteFeeText, quoteExpiresText, quoteExpiresUrgent, warning, submitLabel, submitVariant, submitDisabled, onFromTickerChange, onToTickerChange, onFromInputChange, onPercentageClick, onToggleFromUnit, onFlip, onSubmit, }: SwapInputCardProps): react_jsx_runtime.JSX.Element;
|
|
633
|
+
declare function SwapInputCard({ fromTicker, toTicker, fromInput, fromOptions, toOptions, categories, defaultActiveCategories, availableText, showMaxText, maxText, selectedPercentage, percentageDisabled, fromUnitLabel, fromUnitIsToggle, receiveAmount, receiveUnitLabel, isLoadingQuote, quoteError, quoteRateText, quoteFeeText, quoteExpiresText, quoteExpiresUrgent, warning, submitLabel, submitIcon, submitVariant, submitDisabled, onFromTickerChange, onToTickerChange, onFromInputChange, onPercentageClick, onToggleFromUnit, onFlip, onSubmit, }: SwapInputCardProps): react_jsx_runtime.JSX.Element;
|
|
632
634
|
|
|
633
635
|
interface ActivityListItem<TData = unknown> {
|
|
634
636
|
id: string;
|
package/dist/web/index.d.ts
CHANGED
|
@@ -618,6 +618,8 @@ interface SwapInputCardProps {
|
|
|
618
618
|
quoteExpiresUrgent?: boolean;
|
|
619
619
|
warning?: string | null;
|
|
620
620
|
submitLabel: string;
|
|
621
|
+
/** Optional leading icon for the submit CTA (e.g. a Material-Symbols glyph). */
|
|
622
|
+
submitIcon?: ReactNode;
|
|
621
623
|
submitVariant?: ButtonProps['variant'];
|
|
622
624
|
submitDisabled?: boolean;
|
|
623
625
|
onFromTickerChange: (ticker: string) => void;
|
|
@@ -628,7 +630,7 @@ interface SwapInputCardProps {
|
|
|
628
630
|
onFlip: () => void;
|
|
629
631
|
onSubmit: () => void;
|
|
630
632
|
}
|
|
631
|
-
declare function SwapInputCard({ fromTicker, toTicker, fromInput, fromOptions, toOptions, categories, defaultActiveCategories, availableText, showMaxText, maxText, selectedPercentage, percentageDisabled, fromUnitLabel, fromUnitIsToggle, receiveAmount, receiveUnitLabel, isLoadingQuote, quoteError, quoteRateText, quoteFeeText, quoteExpiresText, quoteExpiresUrgent, warning, submitLabel, submitVariant, submitDisabled, onFromTickerChange, onToTickerChange, onFromInputChange, onPercentageClick, onToggleFromUnit, onFlip, onSubmit, }: SwapInputCardProps): react_jsx_runtime.JSX.Element;
|
|
633
|
+
declare function SwapInputCard({ fromTicker, toTicker, fromInput, fromOptions, toOptions, categories, defaultActiveCategories, availableText, showMaxText, maxText, selectedPercentage, percentageDisabled, fromUnitLabel, fromUnitIsToggle, receiveAmount, receiveUnitLabel, isLoadingQuote, quoteError, quoteRateText, quoteFeeText, quoteExpiresText, quoteExpiresUrgent, warning, submitLabel, submitIcon, submitVariant, submitDisabled, onFromTickerChange, onToTickerChange, onFromInputChange, onPercentageClick, onToggleFromUnit, onFlip, onSubmit, }: SwapInputCardProps): react_jsx_runtime.JSX.Element;
|
|
632
634
|
|
|
633
635
|
interface ActivityListItem<TData = unknown> {
|
|
634
636
|
id: string;
|
package/dist/web/index.js
CHANGED
|
@@ -985,29 +985,55 @@ function NetworkBadge({
|
|
|
985
985
|
const content = children ?? (shouldShowLabel ? label : null);
|
|
986
986
|
const chipSize = size === "sm" ? "size-6" : "size-8";
|
|
987
987
|
const imageSize = size === "sm" ? "size-3.5" : "size-icon-lg";
|
|
988
|
-
const renderGlyph = (className2) =>
|
|
989
|
-
"
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
988
|
+
const renderGlyph = (className2) => {
|
|
989
|
+
if (network === "L1") {
|
|
990
|
+
return /* @__PURE__ */ jsx15(
|
|
991
|
+
"span",
|
|
992
|
+
{
|
|
993
|
+
className: cn("material-symbols-outlined leading-none", color, className2),
|
|
994
|
+
style: { fontSize: size === "sm" ? 12 : 16 },
|
|
995
|
+
"aria-hidden": true,
|
|
996
|
+
children: "link"
|
|
997
|
+
}
|
|
998
|
+
);
|
|
995
999
|
}
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1000
|
+
if (network === "RGB-LN") {
|
|
1001
|
+
return /* @__PURE__ */ jsxs6("span", { className: "inline-flex items-center gap-0.5", children: [
|
|
1002
|
+
/* @__PURE__ */ jsx15(
|
|
1003
|
+
"img",
|
|
1004
|
+
{
|
|
1005
|
+
src: `${iconBasePath}/rgb/rgb-logo.svg`,
|
|
1006
|
+
alt: "RGB",
|
|
1007
|
+
className: cn(className2, "object-contain", defaultIconClassName, iconClassName)
|
|
1008
|
+
}
|
|
1009
|
+
),
|
|
1010
|
+
/* @__PURE__ */ jsx15(
|
|
1011
|
+
"img",
|
|
1012
|
+
{
|
|
1013
|
+
src: `${iconBasePath}/lightning/lightning.svg`,
|
|
1014
|
+
alt: "Lightning",
|
|
1015
|
+
className: cn(className2, "object-contain", iconClassName)
|
|
1016
|
+
}
|
|
1017
|
+
)
|
|
1018
|
+
] });
|
|
1002
1019
|
}
|
|
1003
|
-
|
|
1020
|
+
return /* @__PURE__ */ jsx15(
|
|
1021
|
+
"img",
|
|
1022
|
+
{
|
|
1023
|
+
src: icon,
|
|
1024
|
+
alt: network,
|
|
1025
|
+
className: cn(className2, "object-contain", defaultIconClassName, iconClassName)
|
|
1026
|
+
}
|
|
1027
|
+
);
|
|
1028
|
+
};
|
|
1004
1029
|
if (!content) {
|
|
1030
|
+
const isDualGlyph = network === "RGB-LN";
|
|
1005
1031
|
return /* @__PURE__ */ jsx15(
|
|
1006
1032
|
"span",
|
|
1007
1033
|
{
|
|
1008
1034
|
className: cn(
|
|
1009
1035
|
"flex items-center justify-center rounded-full shadow-inner",
|
|
1010
|
-
chipSize,
|
|
1036
|
+
isDualGlyph ? size === "sm" ? "h-6 px-1.5" : "h-8 px-2" : chipSize,
|
|
1011
1037
|
iconBg,
|
|
1012
1038
|
className
|
|
1013
1039
|
),
|
|
@@ -2915,9 +2941,14 @@ function AssetSelector({
|
|
|
2915
2941
|
" available"
|
|
2916
2942
|
] })
|
|
2917
2943
|
] }),
|
|
2918
|
-
selected && /*
|
|
2944
|
+
selected && /* Network-coloured chip — uses the existing NetworkBadge
|
|
2945
|
+
so the asset's network color carries through (matches
|
|
2946
|
+
the showcase / wallet main page styling). When the
|
|
2947
|
+
asset has no network we fall back to a neutral pill. */
|
|
2948
|
+
/* @__PURE__ */ jsxs22("div", { className: "flex items-center gap-2 rounded-full border border-white/10 bg-white/5 px-2.5 py-1", children: [
|
|
2919
2949
|
/* @__PURE__ */ jsx34(AssetIcon, { ticker: selected.ticker, logoUri: selected.icon, size: 18 }),
|
|
2920
|
-
/* @__PURE__ */ jsx34("span", { className: "text-tiny font-semibold text-
|
|
2950
|
+
/* @__PURE__ */ jsx34("span", { className: "text-tiny font-semibold text-white", children: selected.ticker }),
|
|
2951
|
+
selected.network && /* @__PURE__ */ jsx34(NetworkBadge, { network: selected.network, showLabel: true, className: "py-[1px]" })
|
|
2921
2952
|
] })
|
|
2922
2953
|
] }) }),
|
|
2923
2954
|
/* @__PURE__ */ jsxs22("div", { className: "flex-shrink-0 border-b border-white/[0.08] px-4 py-3", children: [
|
|
@@ -2938,7 +2969,7 @@ function AssetSelector({
|
|
|
2938
2969
|
value: search,
|
|
2939
2970
|
onChange: (event) => setSearch(event.target.value),
|
|
2940
2971
|
placeholder: "Search...",
|
|
2941
|
-
className: "h-11 w-full rounded-2xl border bg-black/20 pl-10 pr-3 text-sm text-white placeholder:text-white/25 focus:border-primary/50 focus:outline-none"
|
|
2972
|
+
className: "h-11 w-full rounded-2xl border border-transparent bg-black/20 pl-10 pr-3 text-sm text-white placeholder:text-white/25 focus:border-primary/50 focus:outline-none"
|
|
2942
2973
|
}
|
|
2943
2974
|
)
|
|
2944
2975
|
] }),
|
|
@@ -2961,7 +2992,7 @@ function AssetSelector({
|
|
|
2961
2992
|
);
|
|
2962
2993
|
}) })
|
|
2963
2994
|
] }),
|
|
2964
|
-
/* @__PURE__ */ jsx34(ScrollArea, { className: "min-h-0", viewportClassName: "px-2 py-2", children: filtered.length === 0 ? /* @__PURE__ */ jsxs22("div", { className: "flex flex-col items-center gap-2 px-4 py-10 text-center text-sm text-white/30", children: [
|
|
2995
|
+
/* @__PURE__ */ jsx34(ScrollArea, { className: "min-h-0", viewportClassName: "px-2 py-2 pb-6", children: filtered.length === 0 ? /* @__PURE__ */ jsxs22("div", { className: "flex flex-col items-center gap-2 px-4 py-10 text-center text-sm text-white/30", children: [
|
|
2965
2996
|
/* @__PURE__ */ jsx34(Icon2, { name: "search", size: "md", className: "opacity-40" }),
|
|
2966
2997
|
/* @__PURE__ */ jsxs22("span", { children: [
|
|
2967
2998
|
"No results",
|
|
@@ -3138,6 +3169,7 @@ function SwapInputCard({
|
|
|
3138
3169
|
quoteExpiresUrgent = false,
|
|
3139
3170
|
warning,
|
|
3140
3171
|
submitLabel,
|
|
3172
|
+
submitIcon,
|
|
3141
3173
|
submitVariant = "cta",
|
|
3142
3174
|
submitDisabled = false,
|
|
3143
3175
|
onFromTickerChange,
|
|
@@ -3151,7 +3183,26 @@ function SwapInputCard({
|
|
|
3151
3183
|
return /* @__PURE__ */ jsxs23(Fragment8, { children: [
|
|
3152
3184
|
/* @__PURE__ */ jsxs23("div", { className: "relative mb-3 flex flex-col rounded-3xl bg-white/[0.03] shadow-2xl shadow-black/40 backdrop-blur-2xl transition-all duration-300", children: [
|
|
3153
3185
|
/* @__PURE__ */ jsxs23("div", { className: "p-3.5 pb-4", children: [
|
|
3154
|
-
/* @__PURE__ */
|
|
3186
|
+
/* @__PURE__ */ jsxs23("div", { className: "mb-2 flex items-center justify-between gap-2", children: [
|
|
3187
|
+
/* @__PURE__ */ jsx35("p", { className: "text-xs font-bold uppercase tracking-widest text-white/60", children: "You Pay" }),
|
|
3188
|
+
/* @__PURE__ */ jsx35("div", { className: "flex items-center gap-1", children: PERCENTAGES.map((percent) => /* @__PURE__ */ jsxs23(
|
|
3189
|
+
"button",
|
|
3190
|
+
{
|
|
3191
|
+
type: "button",
|
|
3192
|
+
disabled: percentageDisabled,
|
|
3193
|
+
onClick: () => onPercentageClick(percent),
|
|
3194
|
+
className: cn(
|
|
3195
|
+
"rounded px-1.5 py-0.5 text-xxs font-bold transition-all duration-300 disabled:cursor-not-allowed disabled:opacity-40",
|
|
3196
|
+
selectedPercentage === percent ? "border-primary/50 bg-primary/20 text-primary shadow-sm" : "bg-white/[0.03] text-muted-foreground hover:text-white"
|
|
3197
|
+
),
|
|
3198
|
+
children: [
|
|
3199
|
+
percent,
|
|
3200
|
+
"%"
|
|
3201
|
+
]
|
|
3202
|
+
},
|
|
3203
|
+
percent
|
|
3204
|
+
)) })
|
|
3205
|
+
] }),
|
|
3155
3206
|
/* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-2", children: [
|
|
3156
3207
|
/* @__PURE__ */ jsx35(
|
|
3157
3208
|
AssetSelector,
|
|
@@ -3183,44 +3234,25 @@ function SwapInputCard({
|
|
|
3183
3234
|
{
|
|
3184
3235
|
type: "button",
|
|
3185
3236
|
onClick: onToggleFromUnit,
|
|
3186
|
-
className: "mt-0.5 text-right text-xs text-muted-foreground
|
|
3237
|
+
className: "mt-0.5 text-right text-xs text-muted-foreground transition-colors hover:text-primary",
|
|
3187
3238
|
title: "Tap to switch unit",
|
|
3188
3239
|
children: fromUnitLabel
|
|
3189
3240
|
}
|
|
3190
3241
|
) : /* @__PURE__ */ jsx35("p", { className: "mt-0.5 text-xs text-muted-foreground", children: fromUnitLabel })
|
|
3191
3242
|
] })
|
|
3192
3243
|
] }),
|
|
3193
|
-
/* @__PURE__ */
|
|
3194
|
-
/* @__PURE__ */ jsx35("p", { className: "text-xxs font-medium text-white/60", children: showMaxText && maxText ? `Max: ${maxText}` : `Available: ${availableText}` }),
|
|
3195
|
-
/* @__PURE__ */ jsx35("div", { className: "flex items-center gap-1", children: PERCENTAGES.map((percent) => /* @__PURE__ */ jsxs23(
|
|
3196
|
-
"button",
|
|
3197
|
-
{
|
|
3198
|
-
type: "button",
|
|
3199
|
-
disabled: percentageDisabled,
|
|
3200
|
-
onClick: () => onPercentageClick(percent),
|
|
3201
|
-
className: cn(
|
|
3202
|
-
"rounded px-1.5 py-0.5 text-xxs font-bold transition-all duration-300 disabled:cursor-not-allowed disabled:opacity-40",
|
|
3203
|
-
selectedPercentage === percent ? "border-primary/50 bg-primary/20 text-primary shadow-sm" : "bg-white/[0.03] text-muted-foreground hover:text-white"
|
|
3204
|
-
),
|
|
3205
|
-
children: [
|
|
3206
|
-
percent,
|
|
3207
|
-
"%"
|
|
3208
|
-
]
|
|
3209
|
-
},
|
|
3210
|
-
percent
|
|
3211
|
-
)) })
|
|
3212
|
-
] })
|
|
3244
|
+
/* @__PURE__ */ jsx35("div", { className: "mt-2 flex items-center justify-between gap-2", children: /* @__PURE__ */ jsx35("p", { className: "text-xxs font-medium text-white/60", children: showMaxText && maxText ? `Max: ${maxText}` : `Available: ${availableText}` }) })
|
|
3213
3245
|
] }),
|
|
3214
|
-
/* @__PURE__ */ jsx35("div", { className: "relative mx-6 flex h-px items-center justify-center bg-white/[0.08]", children: /* @__PURE__ */ jsx35(
|
|
3246
|
+
/* @__PURE__ */ jsx35("div", { className: "relative mx-6 flex h-px items-center justify-center bg-white/[0.08]", children: /* @__PURE__ */ jsx35("span", { className: "absolute flex h-11 w-11 items-center justify-center rounded-full bg-card shadow-lg shadow-black/35", children: /* @__PURE__ */ jsx35(
|
|
3215
3247
|
"button",
|
|
3216
3248
|
{
|
|
3217
3249
|
type: "button",
|
|
3218
3250
|
onClick: onFlip,
|
|
3219
3251
|
title: "Flip assets",
|
|
3220
|
-
className: "
|
|
3252
|
+
className: "flex h-11 w-11 items-center justify-center rounded-full bg-card text-primary transition-transform duration-500 hover:rotate-180 hover:bg-accent active:scale-95",
|
|
3221
3253
|
children: /* @__PURE__ */ jsx35(Icon2, { name: "swap_vert", size: "md" })
|
|
3222
3254
|
}
|
|
3223
|
-
) }),
|
|
3255
|
+
) }) }),
|
|
3224
3256
|
/* @__PURE__ */ jsxs23("div", { className: "rounded-b-3xl bg-gradient-to-br from-white/[0.01] to-primary/[0.04] p-3.5 pt-4 transition-all duration-300", children: [
|
|
3225
3257
|
/* @__PURE__ */ jsx35("p", { className: "mb-2 text-xs font-bold uppercase tracking-widest text-primary/70", children: "You Receive" }),
|
|
3226
3258
|
/* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-2", children: [
|
|
@@ -3279,7 +3311,10 @@ function SwapInputCard({
|
|
|
3279
3311
|
className: "w-full",
|
|
3280
3312
|
onClick: onSubmit,
|
|
3281
3313
|
disabled: submitDisabled,
|
|
3282
|
-
children:
|
|
3314
|
+
children: /* @__PURE__ */ jsxs23("span", { className: "inline-flex items-center justify-center gap-2", children: [
|
|
3315
|
+
submitIcon,
|
|
3316
|
+
/* @__PURE__ */ jsx35("span", { children: submitLabel })
|
|
3317
|
+
] })
|
|
3283
3318
|
}
|
|
3284
3319
|
)
|
|
3285
3320
|
] });
|
package/package.json
CHANGED