kaleido-ui 0.1.24 → 0.1.26

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.
@@ -3102,24 +3102,46 @@ function AssetSelector({
3102
3102
  }
3103
3103
  )
3104
3104
  ] }),
3105
- hasCategoryFilters && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "mt-3 flex flex-wrap items-center gap-2", children: categories.map((category) => {
3106
- const isActive = activeCategories.includes(category.id);
3107
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3105
+ hasCategoryFilters && /*
3106
+ * Multi-select category chips — spec calls for "Filter and
3107
+ * Order menus (like in Blog)" but multi-select is the more
3108
+ * useful behaviour for an asset picker (lets the user see
3109
+ * stables + RWA together while comparing) and chips are
3110
+ * more discoverable than a dropdown for 3 short labels.
3111
+ * Restyle the chips to read as borderless pills consistent
3112
+ * with the rest of the modal, and add a small "Clear"
3113
+ * affordance when at least one chip is off so the user
3114
+ * can return to "all" without toggling each one.
3115
+ */
3116
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "mt-3 flex flex-wrap items-center gap-1.5", children: [
3117
+ categories.map((category) => {
3118
+ const isActive = activeCategories.includes(category.id);
3119
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3120
+ "button",
3121
+ {
3122
+ type: "button",
3123
+ onClick: () => setActiveCategories(
3124
+ (current) => current.includes(category.id) ? current.filter((value) => value !== category.id) : [...current, category.id]
3125
+ ),
3126
+ className: cn(
3127
+ "rounded-full px-2.5 py-1 text-tiny font-bold uppercase tracking-wide shadow-inner transition-colors",
3128
+ isActive ? "bg-primary/[0.14] text-primary" : "bg-surface-card text-text-dimmed hover:text-white/75"
3129
+ ),
3130
+ children: category.label
3131
+ },
3132
+ category.id
3133
+ );
3134
+ }),
3135
+ activeCategories.length !== categories.length && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3108
3136
  "button",
3109
3137
  {
3110
3138
  type: "button",
3111
- onClick: () => setActiveCategories(
3112
- (current) => current.includes(category.id) ? current.filter((value) => value !== category.id) : [...current, category.id]
3113
- ),
3114
- className: cn(
3115
- "rounded-full border px-3 py-1 text-xxs font-bold uppercase tracking-eyebrow transition-colors",
3116
- isActive ? "border-primary/35 bg-primary/[0.14] text-primary" : "border-border bg-white/[0.03] text-white/40 hover:border-white/20 hover:text-white/65"
3117
- ),
3118
- children: category.label
3119
- },
3120
- category.id
3121
- );
3122
- }) })
3139
+ onClick: () => setActiveCategories(categories.map((category) => category.id)),
3140
+ className: "ml-auto rounded-full px-2 py-1 text-tiny font-bold uppercase tracking-wide text-white/40 transition-colors hover:text-white/75",
3141
+ children: "All"
3142
+ }
3143
+ )
3144
+ ] })
3123
3145
  ] }),
3124
3146
  /* @__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: [
3125
3147
  /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Icon2, { name: "search", size: "md", className: "opacity-40" }),
@@ -3153,34 +3175,29 @@ function AssetSelector({
3153
3175
  {
3154
3176
  ticker: option.ticker,
3155
3177
  logoUri: option.icon,
3156
- size: 32,
3178
+ size: 38,
3157
3179
  className: cn(
3158
- "transition-transform duration-200",
3180
+ "shrink-0 transition-transform duration-200",
3159
3181
  !isDisabled && "group-hover:scale-[1.04]"
3160
3182
  )
3161
3183
  }
3162
3184
  ),
3163
- /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "min-w-0 flex-1 text-left", children: [
3164
- /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "flex items-center justify-between gap-2 font-semibold text-white", children: [
3165
- /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "flex min-w-0 items-center gap-1.5", children: [
3166
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { children: option.ticker }),
3167
- option.network && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3168
- NetworkBadge,
3169
- {
3170
- network: option.network,
3171
- showLabel: true,
3172
- className: "py-[1px]"
3173
- }
3174
- )
3175
- ] }),
3176
- isSelected && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "rounded-full border border-primary/20 bg-primary/10 px-2 py-0.5 text-xxs font-bold uppercase tracking-wide text-primary", children: "Current" })
3185
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "flex min-w-0 flex-1 items-center justify-between gap-3 text-left", children: [
3186
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "min-w-0 flex flex-col leading-tight", children: [
3187
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "truncate text-base font-bold tracking-wide text-white", children: option.name ?? option.ticker }),
3188
+ option.network && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "mt-1", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3189
+ NetworkBadge,
3190
+ {
3191
+ network: option.network,
3192
+ showLabel: true,
3193
+ size: "sm",
3194
+ className: "py-[1px]"
3195
+ }
3196
+ ) })
3177
3197
  ] }),
3178
- /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "mt-0.5 flex items-center justify-between gap-3", children: [
3179
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "truncate text-xs text-white/35", children: option.name ?? option.ticker }),
3180
- /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "flex items-center gap-2", children: [
3181
- optionCategoryLabel && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "rounded-full border border-border-default bg-surface-overlay px-2 py-0.5 text-xxs font-semibold uppercase tracking-eyebrow text-text-dimmed", children: optionCategoryLabel }),
3182
- isDisabled && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "text-xxs font-medium uppercase tracking-wide text-white/25", children: "In use" })
3183
- ] })
3198
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "flex shrink-0 flex-col items-end gap-0.5", children: [
3199
+ isSelected ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "rounded-full border border-primary/25 bg-primary/[0.14] px-2 py-0.5 text-xxs font-bold uppercase tracking-wide text-primary", children: "Current" }) : optionCategoryLabel && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "rounded-full bg-surface-card px-2 py-0.5 text-tiny font-bold uppercase tracking-wide text-text-dimmed shadow-inner", children: optionCategoryLabel }),
3200
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "text-tiny font-medium uppercase tracking-wide text-white/35", children: isDisabled ? "In use" : option.ticker })
3184
3201
  ] })
3185
3202
  ] })
3186
3203
  ]
@@ -3296,6 +3313,8 @@ function SwapInputCard({
3296
3313
  quoteFeeText,
3297
3314
  quoteExpiresText,
3298
3315
  quoteExpiresUrgent = false,
3316
+ quoteVenueText,
3317
+ quoteVenueTone = "primary",
3299
3318
  warning,
3300
3319
  submitLabel,
3301
3320
  submitIcon,
@@ -3405,7 +3424,25 @@ function SwapInputCard({
3405
3424
  ] })
3406
3425
  ] })
3407
3426
  ] }),
3408
- (quoteError || quoteRateText || quoteFeeText || quoteExpiresText) && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "rounded-xl bg-card/60 p-3", children: quoteError ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", { className: "text-center text-xs text-danger", children: quoteError }) : /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "space-y-1.5", children: [
3427
+ (quoteError || quoteRateText || quoteFeeText || quoteExpiresText || quoteVenueText) && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "rounded-xl bg-card/60 p-3", children: quoteError ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", { className: "text-center text-xs text-danger", children: quoteError }) : /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "space-y-1.5", children: [
3428
+ quoteVenueText && /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex items-center justify-between text-xs", children: [
3429
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "text-white/40", children: "Provider" }),
3430
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("span", { className: "inline-flex items-center gap-1.5 font-medium text-white/65", children: [
3431
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3432
+ "span",
3433
+ {
3434
+ className: cn(
3435
+ "size-1.5 rounded-full",
3436
+ quoteVenueTone === "spark" && "bg-network-spark",
3437
+ quoteVenueTone === "info" && "bg-info",
3438
+ quoteVenueTone === "primary" && "bg-primary"
3439
+ ),
3440
+ "aria-hidden": true
3441
+ }
3442
+ ),
3443
+ quoteVenueText
3444
+ ] })
3445
+ ] }),
3409
3446
  quoteRateText && /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex items-center justify-between text-xs", children: [
3410
3447
  /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "text-white/40", children: "Rate" }),
3411
3448
  /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "font-medium text-white/65", children: quoteRateText })
@@ -616,6 +616,10 @@ interface SwapInputCardProps {
616
616
  quoteFeeText?: string | null;
617
617
  quoteExpiresText?: string | null;
618
618
  quoteExpiresUrgent?: boolean;
619
+ /** Routing venue label shown next to the rate row (e.g. "KaleidoSwap"). */
620
+ quoteVenueText?: string | null;
621
+ /** Tone of the venue dot — primary for KaleidoSwap, info/spark for Flashnet. */
622
+ quoteVenueTone?: 'primary' | 'spark' | 'info';
619
623
  warning?: string | null;
620
624
  submitLabel: string;
621
625
  /** Optional leading icon for the submit CTA (e.g. a Material-Symbols glyph). */
@@ -630,7 +634,7 @@ interface SwapInputCardProps {
630
634
  onFlip: () => void;
631
635
  onSubmit: () => void;
632
636
  }
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;
637
+ 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, quoteVenueText, quoteVenueTone, warning, submitLabel, submitIcon, submitVariant, submitDisabled, onFromTickerChange, onToTickerChange, onFromInputChange, onPercentageClick, onToggleFromUnit, onFlip, onSubmit, }: SwapInputCardProps): react_jsx_runtime.JSX.Element;
634
638
 
635
639
  interface ActivityListItem<TData = unknown> {
636
640
  id: string;
@@ -616,6 +616,10 @@ interface SwapInputCardProps {
616
616
  quoteFeeText?: string | null;
617
617
  quoteExpiresText?: string | null;
618
618
  quoteExpiresUrgent?: boolean;
619
+ /** Routing venue label shown next to the rate row (e.g. "KaleidoSwap"). */
620
+ quoteVenueText?: string | null;
621
+ /** Tone of the venue dot — primary for KaleidoSwap, info/spark for Flashnet. */
622
+ quoteVenueTone?: 'primary' | 'spark' | 'info';
619
623
  warning?: string | null;
620
624
  submitLabel: string;
621
625
  /** Optional leading icon for the submit CTA (e.g. a Material-Symbols glyph). */
@@ -630,7 +634,7 @@ interface SwapInputCardProps {
630
634
  onFlip: () => void;
631
635
  onSubmit: () => void;
632
636
  }
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;
637
+ 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, quoteVenueText, quoteVenueTone, warning, submitLabel, submitIcon, submitVariant, submitDisabled, onFromTickerChange, onToTickerChange, onFromInputChange, onPercentageClick, onToggleFromUnit, onFlip, onSubmit, }: SwapInputCardProps): react_jsx_runtime.JSX.Element;
634
638
 
635
639
  interface ActivityListItem<TData = unknown> {
636
640
  id: string;
package/dist/web/index.js CHANGED
@@ -2947,24 +2947,46 @@ function AssetSelector({
2947
2947
  }
2948
2948
  )
2949
2949
  ] }),
2950
- hasCategoryFilters && /* @__PURE__ */ jsx34("div", { className: "mt-3 flex flex-wrap items-center gap-2", children: categories.map((category) => {
2951
- const isActive = activeCategories.includes(category.id);
2952
- return /* @__PURE__ */ jsx34(
2950
+ hasCategoryFilters && /*
2951
+ * Multi-select category chips — spec calls for "Filter and
2952
+ * Order menus (like in Blog)" but multi-select is the more
2953
+ * useful behaviour for an asset picker (lets the user see
2954
+ * stables + RWA together while comparing) and chips are
2955
+ * more discoverable than a dropdown for 3 short labels.
2956
+ * Restyle the chips to read as borderless pills consistent
2957
+ * with the rest of the modal, and add a small "Clear"
2958
+ * affordance when at least one chip is off so the user
2959
+ * can return to "all" without toggling each one.
2960
+ */
2961
+ /* @__PURE__ */ jsxs22("div", { className: "mt-3 flex flex-wrap items-center gap-1.5", children: [
2962
+ categories.map((category) => {
2963
+ const isActive = activeCategories.includes(category.id);
2964
+ return /* @__PURE__ */ jsx34(
2965
+ "button",
2966
+ {
2967
+ type: "button",
2968
+ onClick: () => setActiveCategories(
2969
+ (current) => current.includes(category.id) ? current.filter((value) => value !== category.id) : [...current, category.id]
2970
+ ),
2971
+ className: cn(
2972
+ "rounded-full px-2.5 py-1 text-tiny font-bold uppercase tracking-wide shadow-inner transition-colors",
2973
+ isActive ? "bg-primary/[0.14] text-primary" : "bg-surface-card text-text-dimmed hover:text-white/75"
2974
+ ),
2975
+ children: category.label
2976
+ },
2977
+ category.id
2978
+ );
2979
+ }),
2980
+ activeCategories.length !== categories.length && /* @__PURE__ */ jsx34(
2953
2981
  "button",
2954
2982
  {
2955
2983
  type: "button",
2956
- onClick: () => setActiveCategories(
2957
- (current) => current.includes(category.id) ? current.filter((value) => value !== category.id) : [...current, category.id]
2958
- ),
2959
- className: cn(
2960
- "rounded-full border px-3 py-1 text-xxs font-bold uppercase tracking-eyebrow transition-colors",
2961
- isActive ? "border-primary/35 bg-primary/[0.14] text-primary" : "border-border bg-white/[0.03] text-white/40 hover:border-white/20 hover:text-white/65"
2962
- ),
2963
- children: category.label
2964
- },
2965
- category.id
2966
- );
2967
- }) })
2984
+ onClick: () => setActiveCategories(categories.map((category) => category.id)),
2985
+ className: "ml-auto rounded-full px-2 py-1 text-tiny font-bold uppercase tracking-wide text-white/40 transition-colors hover:text-white/75",
2986
+ children: "All"
2987
+ }
2988
+ )
2989
+ ] })
2968
2990
  ] }),
2969
2991
  /* @__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: [
2970
2992
  /* @__PURE__ */ jsx34(Icon2, { name: "search", size: "md", className: "opacity-40" }),
@@ -2998,34 +3020,29 @@ function AssetSelector({
2998
3020
  {
2999
3021
  ticker: option.ticker,
3000
3022
  logoUri: option.icon,
3001
- size: 32,
3023
+ size: 38,
3002
3024
  className: cn(
3003
- "transition-transform duration-200",
3025
+ "shrink-0 transition-transform duration-200",
3004
3026
  !isDisabled && "group-hover:scale-[1.04]"
3005
3027
  )
3006
3028
  }
3007
3029
  ),
3008
- /* @__PURE__ */ jsxs22("div", { className: "min-w-0 flex-1 text-left", children: [
3009
- /* @__PURE__ */ jsxs22("div", { className: "flex items-center justify-between gap-2 font-semibold text-white", children: [
3010
- /* @__PURE__ */ jsxs22("div", { className: "flex min-w-0 items-center gap-1.5", children: [
3011
- /* @__PURE__ */ jsx34("span", { children: option.ticker }),
3012
- option.network && /* @__PURE__ */ jsx34(
3013
- NetworkBadge,
3014
- {
3015
- network: option.network,
3016
- showLabel: true,
3017
- className: "py-[1px]"
3018
- }
3019
- )
3020
- ] }),
3021
- isSelected && /* @__PURE__ */ jsx34("span", { className: "rounded-full border border-primary/20 bg-primary/10 px-2 py-0.5 text-xxs font-bold uppercase tracking-wide text-primary", children: "Current" })
3030
+ /* @__PURE__ */ jsxs22("div", { className: "flex min-w-0 flex-1 items-center justify-between gap-3 text-left", children: [
3031
+ /* @__PURE__ */ jsxs22("div", { className: "min-w-0 flex flex-col leading-tight", children: [
3032
+ /* @__PURE__ */ jsx34("span", { className: "truncate text-base font-bold tracking-wide text-white", children: option.name ?? option.ticker }),
3033
+ option.network && /* @__PURE__ */ jsx34("span", { className: "mt-1", children: /* @__PURE__ */ jsx34(
3034
+ NetworkBadge,
3035
+ {
3036
+ network: option.network,
3037
+ showLabel: true,
3038
+ size: "sm",
3039
+ className: "py-[1px]"
3040
+ }
3041
+ ) })
3022
3042
  ] }),
3023
- /* @__PURE__ */ jsxs22("div", { className: "mt-0.5 flex items-center justify-between gap-3", children: [
3024
- /* @__PURE__ */ jsx34("div", { className: "truncate text-xs text-white/35", children: option.name ?? option.ticker }),
3025
- /* @__PURE__ */ jsxs22("div", { className: "flex items-center gap-2", children: [
3026
- optionCategoryLabel && /* @__PURE__ */ jsx34("span", { className: "rounded-full border border-border-default bg-surface-overlay px-2 py-0.5 text-xxs font-semibold uppercase tracking-eyebrow text-text-dimmed", children: optionCategoryLabel }),
3027
- isDisabled && /* @__PURE__ */ jsx34("span", { className: "text-xxs font-medium uppercase tracking-wide text-white/25", children: "In use" })
3028
- ] })
3043
+ /* @__PURE__ */ jsxs22("div", { className: "flex shrink-0 flex-col items-end gap-0.5", children: [
3044
+ isSelected ? /* @__PURE__ */ jsx34("span", { className: "rounded-full border border-primary/25 bg-primary/[0.14] px-2 py-0.5 text-xxs font-bold uppercase tracking-wide text-primary", children: "Current" }) : optionCategoryLabel && /* @__PURE__ */ jsx34("span", { className: "rounded-full bg-surface-card px-2 py-0.5 text-tiny font-bold uppercase tracking-wide text-text-dimmed shadow-inner", children: optionCategoryLabel }),
3045
+ /* @__PURE__ */ jsx34("span", { className: "text-tiny font-medium uppercase tracking-wide text-white/35", children: isDisabled ? "In use" : option.ticker })
3029
3046
  ] })
3030
3047
  ] })
3031
3048
  ]
@@ -3141,6 +3158,8 @@ function SwapInputCard({
3141
3158
  quoteFeeText,
3142
3159
  quoteExpiresText,
3143
3160
  quoteExpiresUrgent = false,
3161
+ quoteVenueText,
3162
+ quoteVenueTone = "primary",
3144
3163
  warning,
3145
3164
  submitLabel,
3146
3165
  submitIcon,
@@ -3250,7 +3269,25 @@ function SwapInputCard({
3250
3269
  ] })
3251
3270
  ] })
3252
3271
  ] }),
3253
- (quoteError || quoteRateText || quoteFeeText || quoteExpiresText) && /* @__PURE__ */ jsx35("div", { className: "rounded-xl bg-card/60 p-3", children: quoteError ? /* @__PURE__ */ jsx35("p", { className: "text-center text-xs text-danger", children: quoteError }) : /* @__PURE__ */ jsxs23("div", { className: "space-y-1.5", children: [
3272
+ (quoteError || quoteRateText || quoteFeeText || quoteExpiresText || quoteVenueText) && /* @__PURE__ */ jsx35("div", { className: "rounded-xl bg-card/60 p-3", children: quoteError ? /* @__PURE__ */ jsx35("p", { className: "text-center text-xs text-danger", children: quoteError }) : /* @__PURE__ */ jsxs23("div", { className: "space-y-1.5", children: [
3273
+ quoteVenueText && /* @__PURE__ */ jsxs23("div", { className: "flex items-center justify-between text-xs", children: [
3274
+ /* @__PURE__ */ jsx35("span", { className: "text-white/40", children: "Provider" }),
3275
+ /* @__PURE__ */ jsxs23("span", { className: "inline-flex items-center gap-1.5 font-medium text-white/65", children: [
3276
+ /* @__PURE__ */ jsx35(
3277
+ "span",
3278
+ {
3279
+ className: cn(
3280
+ "size-1.5 rounded-full",
3281
+ quoteVenueTone === "spark" && "bg-network-spark",
3282
+ quoteVenueTone === "info" && "bg-info",
3283
+ quoteVenueTone === "primary" && "bg-primary"
3284
+ ),
3285
+ "aria-hidden": true
3286
+ }
3287
+ ),
3288
+ quoteVenueText
3289
+ ] })
3290
+ ] }),
3254
3291
  quoteRateText && /* @__PURE__ */ jsxs23("div", { className: "flex items-center justify-between text-xs", children: [
3255
3292
  /* @__PURE__ */ jsx35("span", { className: "text-white/40", children: "Rate" }),
3256
3293
  /* @__PURE__ */ jsx35("span", { className: "font-medium text-white/65", children: quoteRateText })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kaleido-ui",
3
- "version": "0.1.24",
3
+ "version": "0.1.26",
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",