kaleido-ui 0.1.108 → 0.1.109
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 +128 -159
- package/dist/web/index.d.cts +2 -1
- package/dist/web/index.d.ts +2 -1
- package/dist/web/index.js +128 -159
- package/package.json +1 -1
package/dist/web/index.cjs
CHANGED
|
@@ -4711,7 +4711,7 @@ function ActivityList({
|
|
|
4711
4711
|
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "flex flex-col items-center justify-center py-16", children: [
|
|
4712
4712
|
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "mb-4 flex size-16 items-center justify-center rounded-full bg-white/5", children: emptyIcon ?? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(DefaultEmptyIcon, { name: "receipt_long" }) }),
|
|
4713
4713
|
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("h3", { className: "mb-1 text-base font-semibold", children: hasActiveFilters ? filteredEmptyTitle : emptyTitle }),
|
|
4714
|
-
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("p", { className: "mb-4 max-w-[240px] text-center text-xs text-
|
|
4714
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("p", { className: "mb-4 max-w-[240px] text-center text-xs text-white/70", children: hasActiveFilters ? filteredEmptyDescription : emptyDescription }),
|
|
4715
4715
|
hasActiveFilters && onClearFilters ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Button, { variant: "surface", size: "sm", onClick: onClearFilters, children: "Clear Filters" }) : renderEmptyActions?.()
|
|
4716
4716
|
] });
|
|
4717
4717
|
}
|
|
@@ -4721,7 +4721,7 @@ function ActivityList({
|
|
|
4721
4721
|
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
|
|
4722
4722
|
"div",
|
|
4723
4723
|
{
|
|
4724
|
-
className: "relative overflow-hidden rounded-2xl bg-
|
|
4724
|
+
className: "relative overflow-hidden rounded-2xl bg-card bg-none shadow-inner transition-all animate-in fade-in slide-in-from-bottom-2 duration-500",
|
|
4725
4725
|
children: [
|
|
4726
4726
|
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
4727
4727
|
TransactionCard,
|
|
@@ -4734,7 +4734,7 @@ function ActivityList({
|
|
|
4734
4734
|
onSubAmountInfo: item.onSubAmountInfo,
|
|
4735
4735
|
timestamp: item.timestamp,
|
|
4736
4736
|
onClick: () => onExpandedChange?.(isExpanded ? null : item.id),
|
|
4737
|
-
className: "relative z-[1]"
|
|
4737
|
+
className: cn("relative z-[1] bg-card", isExpanded && "shadow-none")
|
|
4738
4738
|
}
|
|
4739
4739
|
),
|
|
4740
4740
|
isExpanded && // -mt-4/pt-4 slides the details up behind the card's bottom
|
|
@@ -4766,63 +4766,69 @@ function ActivityFilterBar({
|
|
|
4766
4766
|
onClearFilters,
|
|
4767
4767
|
searchPlaceholder = "Search by txid, asset..."
|
|
4768
4768
|
}) {
|
|
4769
|
-
return (
|
|
4770
|
-
|
|
4771
|
-
|
|
4772
|
-
|
|
4773
|
-
/* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "flex h-11 items-center gap-2", children: [
|
|
4774
|
-
/* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "relative h-full flex-1", children: [
|
|
4775
|
-
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
4776
|
-
AppIcon,
|
|
4777
|
-
{
|
|
4778
|
-
name: "search",
|
|
4779
|
-
className: "absolute left-3 top-1/2 size-4 -translate-y-1/2 text-white/40"
|
|
4780
|
-
}
|
|
4781
|
-
),
|
|
4782
|
-
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
4783
|
-
"input",
|
|
4784
|
-
{
|
|
4785
|
-
type: "text",
|
|
4786
|
-
placeholder: searchPlaceholder,
|
|
4787
|
-
value: searchTerm,
|
|
4788
|
-
onChange: (event) => onSearchTermChange(event.target.value),
|
|
4789
|
-
className: "h-full w-full rounded-2xl bg-surface-card pl-9 pr-8 text-xs text-white shadow-inner backdrop-blur-xl transition-all placeholder:text-white/30 focus:bg-surface-elevated focus:outline-none"
|
|
4790
|
-
}
|
|
4791
|
-
),
|
|
4792
|
-
searchTerm && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
4793
|
-
"button",
|
|
4794
|
-
{
|
|
4795
|
-
type: "button",
|
|
4796
|
-
onClick: () => onSearchTermChange(""),
|
|
4797
|
-
className: "absolute right-2 top-1/2 -translate-y-1/2 text-white/40 transition-colors hover:text-white",
|
|
4798
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(AppIcon, { name: "close", className: "size-icon-sm" })
|
|
4799
|
-
}
|
|
4800
|
-
)
|
|
4801
|
-
] }),
|
|
4802
|
-
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "h-full w-28 shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
|
|
4803
|
-
Select,
|
|
4769
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "flex h-11 items-center gap-2", children: [
|
|
4770
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "relative h-full flex-1", children: [
|
|
4771
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
4772
|
+
AppIcon,
|
|
4804
4773
|
{
|
|
4805
|
-
|
|
4806
|
-
|
|
4807
|
-
|
|
4808
|
-
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(SelectTrigger, { className: "h-full rounded-2xl border-0 bg-surface-card px-3 py-0 text-xs font-bold text-white shadow-inner backdrop-blur-xl hover:bg-surface-elevated focus:ring-0 data-[state=open]:bg-surface-elevated", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(SelectValue, {}) }),
|
|
4809
|
-
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(SelectContent, { className: "bg-popover/95 p-1.5 shadow-popover", children: statusOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(SelectItem, { value: option.value, className: "py-2 text-xs", children: option.label }, option.value)) })
|
|
4810
|
-
]
|
|
4774
|
+
name: "search",
|
|
4775
|
+
size: "sm",
|
|
4776
|
+
className: "absolute left-3 top-1/2 -translate-y-1/2 text-white/30"
|
|
4811
4777
|
}
|
|
4812
|
-
)
|
|
4813
|
-
|
|
4814
|
-
|
|
4778
|
+
),
|
|
4779
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
4780
|
+
"input",
|
|
4815
4781
|
{
|
|
4816
|
-
|
|
4817
|
-
|
|
4818
|
-
|
|
4819
|
-
|
|
4820
|
-
|
|
4821
|
-
|
|
4782
|
+
type: "text",
|
|
4783
|
+
"data-testid": "activity-search",
|
|
4784
|
+
placeholder: searchPlaceholder,
|
|
4785
|
+
value: searchTerm,
|
|
4786
|
+
onChange: (event) => onSearchTermChange(event.target.value),
|
|
4787
|
+
className: "h-full w-full rounded-xl border border-transparent bg-white/5 py-2.5 pl-10 pr-8 text-sm text-white outline-none transition-all placeholder:text-white/25 focus:border-primary/25 focus:bg-white/8"
|
|
4788
|
+
}
|
|
4789
|
+
),
|
|
4790
|
+
searchTerm && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
4791
|
+
"button",
|
|
4792
|
+
{
|
|
4793
|
+
type: "button",
|
|
4794
|
+
"aria-label": "Clear search",
|
|
4795
|
+
onClick: () => onSearchTermChange(""),
|
|
4796
|
+
className: "absolute right-2 top-1/2 -translate-y-1/2 rounded-md p-1 text-white/40 transition-colors hover:text-white",
|
|
4797
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(AppIcon, { name: "close", size: "sm" })
|
|
4822
4798
|
}
|
|
4823
4799
|
)
|
|
4824
|
-
] })
|
|
4825
|
-
|
|
4800
|
+
] }),
|
|
4801
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "h-full w-28 shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
|
|
4802
|
+
Select,
|
|
4803
|
+
{
|
|
4804
|
+
value: statusFilter,
|
|
4805
|
+
onValueChange: (value) => onStatusFilterChange(value),
|
|
4806
|
+
children: [
|
|
4807
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
4808
|
+
SelectTrigger,
|
|
4809
|
+
{
|
|
4810
|
+
"aria-label": "Filter activity by status",
|
|
4811
|
+
className: "h-full rounded-xl border-0 bg-white/5 px-3 py-0 text-xs font-bold text-white shadow-none hover:bg-white/8 focus:ring-0 data-[state=open]:bg-white/8",
|
|
4812
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(SelectValue, {})
|
|
4813
|
+
}
|
|
4814
|
+
),
|
|
4815
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(SelectContent, { className: "bg-popover/95 p-1.5 shadow-popover", children: statusOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(SelectItem, { value: option.value, className: "py-2 text-xs", children: option.label }, option.value)) })
|
|
4816
|
+
]
|
|
4817
|
+
}
|
|
4818
|
+
) }),
|
|
4819
|
+
hasActiveFilters && onClearFilters && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
4820
|
+
Button,
|
|
4821
|
+
{
|
|
4822
|
+
variant: "surface",
|
|
4823
|
+
size: "icon-lg",
|
|
4824
|
+
onClick: onClearFilters,
|
|
4825
|
+
"aria-label": "Clear filters",
|
|
4826
|
+
title: "Clear Filters",
|
|
4827
|
+
className: "h-11 w-11 shrink-0 rounded-xl",
|
|
4828
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(AppIcon, { name: "close", size: "lg" })
|
|
4829
|
+
}
|
|
4830
|
+
)
|
|
4831
|
+
] });
|
|
4826
4832
|
}
|
|
4827
4833
|
|
|
4828
4834
|
// src/web/components/activity-network-filters.tsx
|
|
@@ -4845,118 +4851,81 @@ function ActivityNetworkFilters({
|
|
|
4845
4851
|
filters,
|
|
4846
4852
|
activeFilter,
|
|
4847
4853
|
onChange,
|
|
4848
|
-
className
|
|
4854
|
+
className,
|
|
4855
|
+
ariaLabel = "Filter activity by network"
|
|
4849
4856
|
}) {
|
|
4850
4857
|
if (filters.length <= 1) return null;
|
|
4851
|
-
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
4852
|
-
|
|
4853
|
-
|
|
4854
|
-
"
|
|
4855
|
-
|
|
4856
|
-
|
|
4857
|
-
|
|
4858
|
-
|
|
4859
|
-
|
|
4860
|
-
|
|
4861
|
-
|
|
4862
|
-
|
|
4863
|
-
|
|
4864
|
-
|
|
4865
|
-
|
|
4866
|
-
|
|
4867
|
-
|
|
4868
|
-
|
|
4869
|
-
|
|
4870
|
-
|
|
4871
|
-
|
|
4872
|
-
|
|
4873
|
-
|
|
4858
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
4859
|
+
"div",
|
|
4860
|
+
{
|
|
4861
|
+
role: "group",
|
|
4862
|
+
"aria-label": ariaLabel,
|
|
4863
|
+
className: cn("flex gap-1.5 overflow-x-auto pb-0.5 no-scrollbar", className),
|
|
4864
|
+
children: filters.map((filter) => {
|
|
4865
|
+
const isActive = activeFilter === filter.value;
|
|
4866
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(
|
|
4867
|
+
"button",
|
|
4868
|
+
{
|
|
4869
|
+
type: "button",
|
|
4870
|
+
"aria-pressed": isActive,
|
|
4871
|
+
onClick: () => onChange(filter.value),
|
|
4872
|
+
className: cn(
|
|
4873
|
+
"flex shrink-0 items-center gap-1 rounded-full px-2.5 py-1.5 text-xxs font-bold uppercase tracking-wider transition-all",
|
|
4874
|
+
isActive ? "bg-primary/15 text-primary ring-1 ring-primary/20" : "bg-white/5 text-muted-foreground hover:bg-white/8 hover:text-white"
|
|
4875
|
+
),
|
|
4876
|
+
children: [
|
|
4877
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
4878
|
+
"span",
|
|
4879
|
+
{
|
|
4880
|
+
"aria-hidden": true,
|
|
4881
|
+
className: "flex size-3 items-center justify-center",
|
|
4882
|
+
children: filter.icon ?? getActivityNetworkFilterIcon(filter.value)
|
|
4883
|
+
}
|
|
4874
4884
|
),
|
|
4875
|
-
|
|
4876
|
-
|
|
4877
|
-
|
|
4878
|
-
|
|
4879
|
-
|
|
4880
|
-
}
|
|
4881
|
-
|
|
4882
|
-
|
|
4883
|
-
}) });
|
|
4885
|
+
filter.label
|
|
4886
|
+
]
|
|
4887
|
+
},
|
|
4888
|
+
filter.value
|
|
4889
|
+
);
|
|
4890
|
+
})
|
|
4891
|
+
}
|
|
4892
|
+
);
|
|
4884
4893
|
}
|
|
4885
4894
|
|
|
4886
4895
|
// src/web/components/activity-type-tabs.tsx
|
|
4887
4896
|
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
4888
4897
|
function ActivityTypeTabs({ counts = {} }) {
|
|
4889
|
-
|
|
4890
|
-
|
|
4891
|
-
|
|
4892
|
-
|
|
4893
|
-
|
|
4894
|
-
|
|
4895
|
-
|
|
4896
|
-
|
|
4897
|
-
|
|
4898
|
-
|
|
4899
|
-
|
|
4900
|
-
|
|
4901
|
-
|
|
4902
|
-
|
|
4903
|
-
|
|
4904
|
-
|
|
4905
|
-
|
|
4906
|
-
|
|
4907
|
-
|
|
4908
|
-
|
|
4909
|
-
|
|
4910
|
-
children:
|
|
4911
|
-
|
|
4912
|
-
|
|
4913
|
-
|
|
4914
|
-
|
|
4915
|
-
|
|
4916
|
-
|
|
4917
|
-
|
|
4918
|
-
|
|
4919
|
-
|
|
4920
|
-
]
|
|
4921
|
-
}
|
|
4922
|
-
),
|
|
4923
|
-
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
4924
|
-
TabsTrigger,
|
|
4925
|
-
{
|
|
4926
|
-
value: "sent",
|
|
4927
|
-
className: "group h-full rounded-xl px-1.5 text-xs font-bold tracking-wide transition-all hover:text-tx-sent data-[state=active]:bg-tx-sent/15 data-[state=active]:text-tx-sent data-[state=active]:hover:bg-tx-sent/20 data-[state=active]:hover:text-tx-sent",
|
|
4928
|
-
children: [
|
|
4929
|
-
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
4930
|
-
AppIcon,
|
|
4931
|
-
{
|
|
4932
|
-
name: "send",
|
|
4933
|
-
size: "sm",
|
|
4934
|
-
className: "mr-1 shrink-0 leading-none text-muted-foreground transition-colors group-hover:text-tx-sent group-data-[state=active]:text-tx-sent"
|
|
4935
|
-
}
|
|
4936
|
-
),
|
|
4937
|
-
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { children: "Out" })
|
|
4938
|
-
]
|
|
4939
|
-
}
|
|
4940
|
-
),
|
|
4941
|
-
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
4942
|
-
TabsTrigger,
|
|
4943
|
-
{
|
|
4944
|
-
value: "swaps",
|
|
4945
|
-
className: "group h-full rounded-xl px-1.5 text-xs font-bold tracking-wide transition-all hover:text-network-arkade data-[state=active]:bg-network-arkade/15 data-[state=active]:text-network-arkade data-[state=active]:hover:bg-network-arkade/20 data-[state=active]:hover:text-network-arkade",
|
|
4946
|
-
children: [
|
|
4947
|
-
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
4948
|
-
AppIcon,
|
|
4949
|
-
{
|
|
4950
|
-
name: "swap",
|
|
4951
|
-
size: "sm",
|
|
4952
|
-
className: "mr-1 shrink-0 leading-none text-muted-foreground transition-colors group-hover:text-network-arkade group-data-[state=active]:text-network-arkade"
|
|
4953
|
-
}
|
|
4954
|
-
),
|
|
4955
|
-
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { children: "Swaps" })
|
|
4956
|
-
]
|
|
4957
|
-
}
|
|
4958
|
-
)
|
|
4959
|
-
] });
|
|
4898
|
+
const actions = [
|
|
4899
|
+
{ value: "all", label: "All" },
|
|
4900
|
+
{ value: "received", label: "In", icon: "receive", actionIcon: "call_received" },
|
|
4901
|
+
{ value: "swaps", label: "Swap", icon: "swap", actionIcon: "swap_horiz" },
|
|
4902
|
+
{ value: "sent", label: "Out", icon: "send", actionIcon: "arrow_outward" }
|
|
4903
|
+
];
|
|
4904
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(TabsList, { className: "grid h-12 w-full grid-cols-4 gap-1 rounded-2xl bg-surface-card p-1 backdrop-blur-xl", children: actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
4905
|
+
TabsTrigger,
|
|
4906
|
+
{
|
|
4907
|
+
value: action.value,
|
|
4908
|
+
"data-action-icon": action.actionIcon,
|
|
4909
|
+
className: "group h-full rounded-xl px-1.5 text-xs font-bold tracking-wide text-muted-foreground transition-all hover:text-primary data-[state=active]:bg-primary/15 data-[state=active]:text-primary data-[state=active]:hover:bg-primary/20 data-[state=active]:hover:text-primary",
|
|
4910
|
+
children: [
|
|
4911
|
+
action.icon && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
4912
|
+
AppIcon,
|
|
4913
|
+
{
|
|
4914
|
+
name: action.icon,
|
|
4915
|
+
size: "sm",
|
|
4916
|
+
className: "mr-1 shrink-0 leading-none text-muted-foreground transition-colors group-hover:text-primary group-data-[state=active]:text-primary"
|
|
4917
|
+
}
|
|
4918
|
+
),
|
|
4919
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { children: action.label }),
|
|
4920
|
+
action.value === "all" && counts.all ? /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("span", { className: "ml-1", children: [
|
|
4921
|
+
"(",
|
|
4922
|
+
counts.all,
|
|
4923
|
+
")"
|
|
4924
|
+
] }) : null
|
|
4925
|
+
]
|
|
4926
|
+
},
|
|
4927
|
+
action.value
|
|
4928
|
+
)) });
|
|
4960
4929
|
}
|
|
4961
4930
|
|
|
4962
4931
|
// src/web/components/activity-detail-row.tsx
|
package/dist/web/index.d.cts
CHANGED
|
@@ -910,9 +910,10 @@ interface ActivityNetworkFiltersProps<TValue extends string = ActivityNetworkFil
|
|
|
910
910
|
activeFilter: TValue;
|
|
911
911
|
onChange: (value: TValue) => void;
|
|
912
912
|
className?: string;
|
|
913
|
+
ariaLabel?: string;
|
|
913
914
|
}
|
|
914
915
|
declare function getActivityNetworkFilterIcon(filter: ActivityNetworkFilterValue): react_jsx_runtime.JSX.Element;
|
|
915
|
-
declare function ActivityNetworkFilters<TValue extends string = ActivityNetworkFilterValue>({ filters, activeFilter, onChange, className, }: ActivityNetworkFiltersProps<TValue>): react_jsx_runtime.JSX.Element | null;
|
|
916
|
+
declare function ActivityNetworkFilters<TValue extends string = ActivityNetworkFilterValue>({ filters, activeFilter, onChange, className, ariaLabel, }: ActivityNetworkFiltersProps<TValue>): react_jsx_runtime.JSX.Element | null;
|
|
916
917
|
|
|
917
918
|
type ActivityTypeTabValue = 'all' | 'received' | 'sent' | 'swaps';
|
|
918
919
|
interface ActivityTypeTabCounts {
|
package/dist/web/index.d.ts
CHANGED
|
@@ -910,9 +910,10 @@ interface ActivityNetworkFiltersProps<TValue extends string = ActivityNetworkFil
|
|
|
910
910
|
activeFilter: TValue;
|
|
911
911
|
onChange: (value: TValue) => void;
|
|
912
912
|
className?: string;
|
|
913
|
+
ariaLabel?: string;
|
|
913
914
|
}
|
|
914
915
|
declare function getActivityNetworkFilterIcon(filter: ActivityNetworkFilterValue): react_jsx_runtime.JSX.Element;
|
|
915
|
-
declare function ActivityNetworkFilters<TValue extends string = ActivityNetworkFilterValue>({ filters, activeFilter, onChange, className, }: ActivityNetworkFiltersProps<TValue>): react_jsx_runtime.JSX.Element | null;
|
|
916
|
+
declare function ActivityNetworkFilters<TValue extends string = ActivityNetworkFilterValue>({ filters, activeFilter, onChange, className, ariaLabel, }: ActivityNetworkFiltersProps<TValue>): react_jsx_runtime.JSX.Element | null;
|
|
916
917
|
|
|
917
918
|
type ActivityTypeTabValue = 'all' | 'received' | 'sent' | 'swaps';
|
|
918
919
|
interface ActivityTypeTabCounts {
|
package/dist/web/index.js
CHANGED
|
@@ -4529,7 +4529,7 @@ function ActivityList({
|
|
|
4529
4529
|
return /* @__PURE__ */ jsxs28("div", { className: "flex flex-col items-center justify-center py-16", children: [
|
|
4530
4530
|
/* @__PURE__ */ jsx41("div", { className: "mb-4 flex size-16 items-center justify-center rounded-full bg-white/5", children: emptyIcon ?? /* @__PURE__ */ jsx41(DefaultEmptyIcon, { name: "receipt_long" }) }),
|
|
4531
4531
|
/* @__PURE__ */ jsx41("h3", { className: "mb-1 text-base font-semibold", children: hasActiveFilters ? filteredEmptyTitle : emptyTitle }),
|
|
4532
|
-
/* @__PURE__ */ jsx41("p", { className: "mb-4 max-w-[240px] text-center text-xs text-
|
|
4532
|
+
/* @__PURE__ */ jsx41("p", { className: "mb-4 max-w-[240px] text-center text-xs text-white/70", children: hasActiveFilters ? filteredEmptyDescription : emptyDescription }),
|
|
4533
4533
|
hasActiveFilters && onClearFilters ? /* @__PURE__ */ jsx41(Button, { variant: "surface", size: "sm", onClick: onClearFilters, children: "Clear Filters" }) : renderEmptyActions?.()
|
|
4534
4534
|
] });
|
|
4535
4535
|
}
|
|
@@ -4539,7 +4539,7 @@ function ActivityList({
|
|
|
4539
4539
|
return /* @__PURE__ */ jsxs28(
|
|
4540
4540
|
"div",
|
|
4541
4541
|
{
|
|
4542
|
-
className: "relative overflow-hidden rounded-2xl bg-
|
|
4542
|
+
className: "relative overflow-hidden rounded-2xl bg-card bg-none shadow-inner transition-all animate-in fade-in slide-in-from-bottom-2 duration-500",
|
|
4543
4543
|
children: [
|
|
4544
4544
|
/* @__PURE__ */ jsx41(
|
|
4545
4545
|
TransactionCard,
|
|
@@ -4552,7 +4552,7 @@ function ActivityList({
|
|
|
4552
4552
|
onSubAmountInfo: item.onSubAmountInfo,
|
|
4553
4553
|
timestamp: item.timestamp,
|
|
4554
4554
|
onClick: () => onExpandedChange?.(isExpanded ? null : item.id),
|
|
4555
|
-
className: "relative z-[1]"
|
|
4555
|
+
className: cn("relative z-[1] bg-card", isExpanded && "shadow-none")
|
|
4556
4556
|
}
|
|
4557
4557
|
),
|
|
4558
4558
|
isExpanded && // -mt-4/pt-4 slides the details up behind the card's bottom
|
|
@@ -4584,63 +4584,69 @@ function ActivityFilterBar({
|
|
|
4584
4584
|
onClearFilters,
|
|
4585
4585
|
searchPlaceholder = "Search by txid, asset..."
|
|
4586
4586
|
}) {
|
|
4587
|
-
return (
|
|
4588
|
-
|
|
4589
|
-
|
|
4590
|
-
|
|
4591
|
-
/* @__PURE__ */ jsxs29("div", { className: "flex h-11 items-center gap-2", children: [
|
|
4592
|
-
/* @__PURE__ */ jsxs29("div", { className: "relative h-full flex-1", children: [
|
|
4593
|
-
/* @__PURE__ */ jsx42(
|
|
4594
|
-
AppIcon,
|
|
4595
|
-
{
|
|
4596
|
-
name: "search",
|
|
4597
|
-
className: "absolute left-3 top-1/2 size-4 -translate-y-1/2 text-white/40"
|
|
4598
|
-
}
|
|
4599
|
-
),
|
|
4600
|
-
/* @__PURE__ */ jsx42(
|
|
4601
|
-
"input",
|
|
4602
|
-
{
|
|
4603
|
-
type: "text",
|
|
4604
|
-
placeholder: searchPlaceholder,
|
|
4605
|
-
value: searchTerm,
|
|
4606
|
-
onChange: (event) => onSearchTermChange(event.target.value),
|
|
4607
|
-
className: "h-full w-full rounded-2xl bg-surface-card pl-9 pr-8 text-xs text-white shadow-inner backdrop-blur-xl transition-all placeholder:text-white/30 focus:bg-surface-elevated focus:outline-none"
|
|
4608
|
-
}
|
|
4609
|
-
),
|
|
4610
|
-
searchTerm && /* @__PURE__ */ jsx42(
|
|
4611
|
-
"button",
|
|
4612
|
-
{
|
|
4613
|
-
type: "button",
|
|
4614
|
-
onClick: () => onSearchTermChange(""),
|
|
4615
|
-
className: "absolute right-2 top-1/2 -translate-y-1/2 text-white/40 transition-colors hover:text-white",
|
|
4616
|
-
children: /* @__PURE__ */ jsx42(AppIcon, { name: "close", className: "size-icon-sm" })
|
|
4617
|
-
}
|
|
4618
|
-
)
|
|
4619
|
-
] }),
|
|
4620
|
-
/* @__PURE__ */ jsx42("div", { className: "h-full w-28 shrink-0", children: /* @__PURE__ */ jsxs29(
|
|
4621
|
-
Select,
|
|
4587
|
+
return /* @__PURE__ */ jsxs29("div", { className: "flex h-11 items-center gap-2", children: [
|
|
4588
|
+
/* @__PURE__ */ jsxs29("div", { className: "relative h-full flex-1", children: [
|
|
4589
|
+
/* @__PURE__ */ jsx42(
|
|
4590
|
+
AppIcon,
|
|
4622
4591
|
{
|
|
4623
|
-
|
|
4624
|
-
|
|
4625
|
-
|
|
4626
|
-
/* @__PURE__ */ jsx42(SelectTrigger, { className: "h-full rounded-2xl border-0 bg-surface-card px-3 py-0 text-xs font-bold text-white shadow-inner backdrop-blur-xl hover:bg-surface-elevated focus:ring-0 data-[state=open]:bg-surface-elevated", children: /* @__PURE__ */ jsx42(SelectValue, {}) }),
|
|
4627
|
-
/* @__PURE__ */ jsx42(SelectContent, { className: "bg-popover/95 p-1.5 shadow-popover", children: statusOptions.map((option) => /* @__PURE__ */ jsx42(SelectItem, { value: option.value, className: "py-2 text-xs", children: option.label }, option.value)) })
|
|
4628
|
-
]
|
|
4592
|
+
name: "search",
|
|
4593
|
+
size: "sm",
|
|
4594
|
+
className: "absolute left-3 top-1/2 -translate-y-1/2 text-white/30"
|
|
4629
4595
|
}
|
|
4630
|
-
)
|
|
4631
|
-
|
|
4632
|
-
|
|
4596
|
+
),
|
|
4597
|
+
/* @__PURE__ */ jsx42(
|
|
4598
|
+
"input",
|
|
4633
4599
|
{
|
|
4634
|
-
|
|
4635
|
-
|
|
4636
|
-
|
|
4637
|
-
|
|
4638
|
-
|
|
4639
|
-
|
|
4600
|
+
type: "text",
|
|
4601
|
+
"data-testid": "activity-search",
|
|
4602
|
+
placeholder: searchPlaceholder,
|
|
4603
|
+
value: searchTerm,
|
|
4604
|
+
onChange: (event) => onSearchTermChange(event.target.value),
|
|
4605
|
+
className: "h-full w-full rounded-xl border border-transparent bg-white/5 py-2.5 pl-10 pr-8 text-sm text-white outline-none transition-all placeholder:text-white/25 focus:border-primary/25 focus:bg-white/8"
|
|
4606
|
+
}
|
|
4607
|
+
),
|
|
4608
|
+
searchTerm && /* @__PURE__ */ jsx42(
|
|
4609
|
+
"button",
|
|
4610
|
+
{
|
|
4611
|
+
type: "button",
|
|
4612
|
+
"aria-label": "Clear search",
|
|
4613
|
+
onClick: () => onSearchTermChange(""),
|
|
4614
|
+
className: "absolute right-2 top-1/2 -translate-y-1/2 rounded-md p-1 text-white/40 transition-colors hover:text-white",
|
|
4615
|
+
children: /* @__PURE__ */ jsx42(AppIcon, { name: "close", size: "sm" })
|
|
4640
4616
|
}
|
|
4641
4617
|
)
|
|
4642
|
-
] })
|
|
4643
|
-
|
|
4618
|
+
] }),
|
|
4619
|
+
/* @__PURE__ */ jsx42("div", { className: "h-full w-28 shrink-0", children: /* @__PURE__ */ jsxs29(
|
|
4620
|
+
Select,
|
|
4621
|
+
{
|
|
4622
|
+
value: statusFilter,
|
|
4623
|
+
onValueChange: (value) => onStatusFilterChange(value),
|
|
4624
|
+
children: [
|
|
4625
|
+
/* @__PURE__ */ jsx42(
|
|
4626
|
+
SelectTrigger,
|
|
4627
|
+
{
|
|
4628
|
+
"aria-label": "Filter activity by status",
|
|
4629
|
+
className: "h-full rounded-xl border-0 bg-white/5 px-3 py-0 text-xs font-bold text-white shadow-none hover:bg-white/8 focus:ring-0 data-[state=open]:bg-white/8",
|
|
4630
|
+
children: /* @__PURE__ */ jsx42(SelectValue, {})
|
|
4631
|
+
}
|
|
4632
|
+
),
|
|
4633
|
+
/* @__PURE__ */ jsx42(SelectContent, { className: "bg-popover/95 p-1.5 shadow-popover", children: statusOptions.map((option) => /* @__PURE__ */ jsx42(SelectItem, { value: option.value, className: "py-2 text-xs", children: option.label }, option.value)) })
|
|
4634
|
+
]
|
|
4635
|
+
}
|
|
4636
|
+
) }),
|
|
4637
|
+
hasActiveFilters && onClearFilters && /* @__PURE__ */ jsx42(
|
|
4638
|
+
Button,
|
|
4639
|
+
{
|
|
4640
|
+
variant: "surface",
|
|
4641
|
+
size: "icon-lg",
|
|
4642
|
+
onClick: onClearFilters,
|
|
4643
|
+
"aria-label": "Clear filters",
|
|
4644
|
+
title: "Clear Filters",
|
|
4645
|
+
className: "h-11 w-11 shrink-0 rounded-xl",
|
|
4646
|
+
children: /* @__PURE__ */ jsx42(AppIcon, { name: "close", size: "lg" })
|
|
4647
|
+
}
|
|
4648
|
+
)
|
|
4649
|
+
] });
|
|
4644
4650
|
}
|
|
4645
4651
|
|
|
4646
4652
|
// src/web/components/activity-network-filters.tsx
|
|
@@ -4663,118 +4669,81 @@ function ActivityNetworkFilters({
|
|
|
4663
4669
|
filters,
|
|
4664
4670
|
activeFilter,
|
|
4665
4671
|
onChange,
|
|
4666
|
-
className
|
|
4672
|
+
className,
|
|
4673
|
+
ariaLabel = "Filter activity by network"
|
|
4667
4674
|
}) {
|
|
4668
4675
|
if (filters.length <= 1) return null;
|
|
4669
|
-
return /* @__PURE__ */ jsx43(
|
|
4670
|
-
|
|
4671
|
-
|
|
4672
|
-
"
|
|
4673
|
-
|
|
4674
|
-
|
|
4675
|
-
|
|
4676
|
-
|
|
4677
|
-
|
|
4678
|
-
|
|
4679
|
-
|
|
4680
|
-
|
|
4681
|
-
|
|
4682
|
-
|
|
4683
|
-
|
|
4684
|
-
|
|
4685
|
-
|
|
4686
|
-
|
|
4687
|
-
|
|
4688
|
-
|
|
4689
|
-
|
|
4690
|
-
|
|
4691
|
-
|
|
4676
|
+
return /* @__PURE__ */ jsx43(
|
|
4677
|
+
"div",
|
|
4678
|
+
{
|
|
4679
|
+
role: "group",
|
|
4680
|
+
"aria-label": ariaLabel,
|
|
4681
|
+
className: cn("flex gap-1.5 overflow-x-auto pb-0.5 no-scrollbar", className),
|
|
4682
|
+
children: filters.map((filter) => {
|
|
4683
|
+
const isActive = activeFilter === filter.value;
|
|
4684
|
+
return /* @__PURE__ */ jsxs30(
|
|
4685
|
+
"button",
|
|
4686
|
+
{
|
|
4687
|
+
type: "button",
|
|
4688
|
+
"aria-pressed": isActive,
|
|
4689
|
+
onClick: () => onChange(filter.value),
|
|
4690
|
+
className: cn(
|
|
4691
|
+
"flex shrink-0 items-center gap-1 rounded-full px-2.5 py-1.5 text-xxs font-bold uppercase tracking-wider transition-all",
|
|
4692
|
+
isActive ? "bg-primary/15 text-primary ring-1 ring-primary/20" : "bg-white/5 text-muted-foreground hover:bg-white/8 hover:text-white"
|
|
4693
|
+
),
|
|
4694
|
+
children: [
|
|
4695
|
+
/* @__PURE__ */ jsx43(
|
|
4696
|
+
"span",
|
|
4697
|
+
{
|
|
4698
|
+
"aria-hidden": true,
|
|
4699
|
+
className: "flex size-3 items-center justify-center",
|
|
4700
|
+
children: filter.icon ?? getActivityNetworkFilterIcon(filter.value)
|
|
4701
|
+
}
|
|
4692
4702
|
),
|
|
4693
|
-
|
|
4694
|
-
|
|
4695
|
-
|
|
4696
|
-
|
|
4697
|
-
|
|
4698
|
-
}
|
|
4699
|
-
|
|
4700
|
-
|
|
4701
|
-
}) });
|
|
4703
|
+
filter.label
|
|
4704
|
+
]
|
|
4705
|
+
},
|
|
4706
|
+
filter.value
|
|
4707
|
+
);
|
|
4708
|
+
})
|
|
4709
|
+
}
|
|
4710
|
+
);
|
|
4702
4711
|
}
|
|
4703
4712
|
|
|
4704
4713
|
// src/web/components/activity-type-tabs.tsx
|
|
4705
4714
|
import { jsx as jsx44, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
4706
4715
|
function ActivityTypeTabs({ counts = {} }) {
|
|
4707
|
-
|
|
4708
|
-
|
|
4709
|
-
|
|
4710
|
-
|
|
4711
|
-
|
|
4712
|
-
|
|
4713
|
-
|
|
4714
|
-
|
|
4715
|
-
|
|
4716
|
-
|
|
4717
|
-
|
|
4718
|
-
|
|
4719
|
-
|
|
4720
|
-
|
|
4721
|
-
|
|
4722
|
-
|
|
4723
|
-
|
|
4724
|
-
|
|
4725
|
-
|
|
4726
|
-
|
|
4727
|
-
|
|
4728
|
-
children:
|
|
4729
|
-
|
|
4730
|
-
|
|
4731
|
-
|
|
4732
|
-
|
|
4733
|
-
|
|
4734
|
-
|
|
4735
|
-
|
|
4736
|
-
|
|
4737
|
-
|
|
4738
|
-
]
|
|
4739
|
-
}
|
|
4740
|
-
),
|
|
4741
|
-
/* @__PURE__ */ jsxs31(
|
|
4742
|
-
TabsTrigger,
|
|
4743
|
-
{
|
|
4744
|
-
value: "sent",
|
|
4745
|
-
className: "group h-full rounded-xl px-1.5 text-xs font-bold tracking-wide transition-all hover:text-tx-sent data-[state=active]:bg-tx-sent/15 data-[state=active]:text-tx-sent data-[state=active]:hover:bg-tx-sent/20 data-[state=active]:hover:text-tx-sent",
|
|
4746
|
-
children: [
|
|
4747
|
-
/* @__PURE__ */ jsx44(
|
|
4748
|
-
AppIcon,
|
|
4749
|
-
{
|
|
4750
|
-
name: "send",
|
|
4751
|
-
size: "sm",
|
|
4752
|
-
className: "mr-1 shrink-0 leading-none text-muted-foreground transition-colors group-hover:text-tx-sent group-data-[state=active]:text-tx-sent"
|
|
4753
|
-
}
|
|
4754
|
-
),
|
|
4755
|
-
/* @__PURE__ */ jsx44("span", { children: "Out" })
|
|
4756
|
-
]
|
|
4757
|
-
}
|
|
4758
|
-
),
|
|
4759
|
-
/* @__PURE__ */ jsxs31(
|
|
4760
|
-
TabsTrigger,
|
|
4761
|
-
{
|
|
4762
|
-
value: "swaps",
|
|
4763
|
-
className: "group h-full rounded-xl px-1.5 text-xs font-bold tracking-wide transition-all hover:text-network-arkade data-[state=active]:bg-network-arkade/15 data-[state=active]:text-network-arkade data-[state=active]:hover:bg-network-arkade/20 data-[state=active]:hover:text-network-arkade",
|
|
4764
|
-
children: [
|
|
4765
|
-
/* @__PURE__ */ jsx44(
|
|
4766
|
-
AppIcon,
|
|
4767
|
-
{
|
|
4768
|
-
name: "swap",
|
|
4769
|
-
size: "sm",
|
|
4770
|
-
className: "mr-1 shrink-0 leading-none text-muted-foreground transition-colors group-hover:text-network-arkade group-data-[state=active]:text-network-arkade"
|
|
4771
|
-
}
|
|
4772
|
-
),
|
|
4773
|
-
/* @__PURE__ */ jsx44("span", { children: "Swaps" })
|
|
4774
|
-
]
|
|
4775
|
-
}
|
|
4776
|
-
)
|
|
4777
|
-
] });
|
|
4716
|
+
const actions = [
|
|
4717
|
+
{ value: "all", label: "All" },
|
|
4718
|
+
{ value: "received", label: "In", icon: "receive", actionIcon: "call_received" },
|
|
4719
|
+
{ value: "swaps", label: "Swap", icon: "swap", actionIcon: "swap_horiz" },
|
|
4720
|
+
{ value: "sent", label: "Out", icon: "send", actionIcon: "arrow_outward" }
|
|
4721
|
+
];
|
|
4722
|
+
return /* @__PURE__ */ jsx44(TabsList, { className: "grid h-12 w-full grid-cols-4 gap-1 rounded-2xl bg-surface-card p-1 backdrop-blur-xl", children: actions.map((action) => /* @__PURE__ */ jsxs31(
|
|
4723
|
+
TabsTrigger,
|
|
4724
|
+
{
|
|
4725
|
+
value: action.value,
|
|
4726
|
+
"data-action-icon": action.actionIcon,
|
|
4727
|
+
className: "group h-full rounded-xl px-1.5 text-xs font-bold tracking-wide text-muted-foreground transition-all hover:text-primary data-[state=active]:bg-primary/15 data-[state=active]:text-primary data-[state=active]:hover:bg-primary/20 data-[state=active]:hover:text-primary",
|
|
4728
|
+
children: [
|
|
4729
|
+
action.icon && /* @__PURE__ */ jsx44(
|
|
4730
|
+
AppIcon,
|
|
4731
|
+
{
|
|
4732
|
+
name: action.icon,
|
|
4733
|
+
size: "sm",
|
|
4734
|
+
className: "mr-1 shrink-0 leading-none text-muted-foreground transition-colors group-hover:text-primary group-data-[state=active]:text-primary"
|
|
4735
|
+
}
|
|
4736
|
+
),
|
|
4737
|
+
/* @__PURE__ */ jsx44("span", { children: action.label }),
|
|
4738
|
+
action.value === "all" && counts.all ? /* @__PURE__ */ jsxs31("span", { className: "ml-1", children: [
|
|
4739
|
+
"(",
|
|
4740
|
+
counts.all,
|
|
4741
|
+
")"
|
|
4742
|
+
] }) : null
|
|
4743
|
+
]
|
|
4744
|
+
},
|
|
4745
|
+
action.value
|
|
4746
|
+
)) });
|
|
4778
4747
|
}
|
|
4779
4748
|
|
|
4780
4749
|
// src/web/components/activity-detail-row.tsx
|
package/package.json
CHANGED