kaleido-ui 0.1.25 → 0.1.27

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.
@@ -2425,7 +2425,8 @@ function AccountNetworkNotice({
2425
2425
  }
2426
2426
  function AccountStatusPills({
2427
2427
  status,
2428
- network
2428
+ network,
2429
+ hideNetworkChip = false
2429
2430
  }) {
2430
2431
  const statusUi = getAccountStatusUi(status);
2431
2432
  const networkUi = getAccountNetworkUi(network);
@@ -2440,7 +2441,7 @@ function AccountStatusPills({
2440
2441
  children: statusUi.label === "Ready" ? "Connected" : statusUi.label
2441
2442
  }
2442
2443
  ),
2443
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2444
+ !hideNetworkChip && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2444
2445
  "span",
2445
2446
  {
2446
2447
  className: cn(
@@ -2501,20 +2502,30 @@ function TransferRouteCard({
2501
2502
  function ExpandIcon({ expanded }) {
2502
2503
  return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Icon2, { name: expanded ? "expand_less" : "expand_more", size: "md" });
2503
2504
  }
2505
+ var ACCOUNT_ACCENT_BG = {
2506
+ RGB: "bg-gradient-to-br from-primary/[0.06] via-card to-primary/[0.10]",
2507
+ SPARK: "bg-gradient-to-br from-info/[0.06] via-card to-info/[0.10]",
2508
+ ARKADE: "bg-gradient-to-br from-network-arkade/[0.06] via-card to-network-arkade/[0.10]"
2509
+ };
2504
2510
  function AccountSettingsRow({
2505
2511
  accountId,
2506
2512
  title,
2507
2513
  status,
2508
2514
  network,
2509
2515
  description,
2510
- onClick
2516
+ onClick,
2517
+ hideNetworkChip = false,
2518
+ accent = false
2511
2519
  }) {
2512
2520
  return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2513
2521
  "button",
2514
2522
  {
2515
2523
  type: "button",
2516
2524
  onClick,
2517
- className: "w-full rounded-3xl bg-white/[0.03] p-4 text-left shadow-inner transition-colors hover:bg-white/[0.05]",
2525
+ className: cn(
2526
+ "w-full rounded-3xl p-4 text-left shadow-inner transition-colors hover:brightness-110",
2527
+ accent ? ACCOUNT_ACCENT_BG[accountId] : "bg-white/[0.03] hover:bg-white/[0.05]"
2528
+ ),
2518
2529
  children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "flex items-start gap-3", children: [
2519
2530
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(AccountHeaderIcons, { accountId }),
2520
2531
  /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "min-w-0 flex-1", children: [
@@ -2525,7 +2536,14 @@ function AccountSettingsRow({
2525
2536
  ] }),
2526
2537
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Icon2, { name: "chevron_right", size: "sm", className: "text-white/40" })
2527
2538
  ] }),
2528
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "mt-3", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(AccountStatusPills, { status, network }) })
2539
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "mt-3", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2540
+ AccountStatusPills,
2541
+ {
2542
+ status,
2543
+ network,
2544
+ hideNetworkChip
2545
+ }
2546
+ ) })
2529
2547
  ] })
2530
2548
  ] })
2531
2549
  }
@@ -3102,24 +3120,46 @@ function AssetSelector({
3102
3120
  }
3103
3121
  )
3104
3122
  ] }),
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)(
3123
+ hasCategoryFilters && /*
3124
+ * Multi-select category chips — spec calls for "Filter and
3125
+ * Order menus (like in Blog)" but multi-select is the more
3126
+ * useful behaviour for an asset picker (lets the user see
3127
+ * stables + RWA together while comparing) and chips are
3128
+ * more discoverable than a dropdown for 3 short labels.
3129
+ * Restyle the chips to read as borderless pills consistent
3130
+ * with the rest of the modal, and add a small "Clear"
3131
+ * affordance when at least one chip is off so the user
3132
+ * can return to "all" without toggling each one.
3133
+ */
3134
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "mt-3 flex flex-wrap items-center gap-1.5", children: [
3135
+ categories.map((category) => {
3136
+ const isActive = activeCategories.includes(category.id);
3137
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3138
+ "button",
3139
+ {
3140
+ type: "button",
3141
+ onClick: () => setActiveCategories(
3142
+ (current) => current.includes(category.id) ? current.filter((value) => value !== category.id) : [...current, category.id]
3143
+ ),
3144
+ className: cn(
3145
+ "rounded-full px-2.5 py-1 text-tiny font-bold uppercase tracking-wide shadow-inner transition-colors",
3146
+ isActive ? "bg-primary/[0.14] text-primary" : "bg-surface-card text-text-dimmed hover:text-white/75"
3147
+ ),
3148
+ children: category.label
3149
+ },
3150
+ category.id
3151
+ );
3152
+ }),
3153
+ activeCategories.length !== categories.length && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3108
3154
  "button",
3109
3155
  {
3110
3156
  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
- }) })
3157
+ onClick: () => setActiveCategories(categories.map((category) => category.id)),
3158
+ 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",
3159
+ children: "All"
3160
+ }
3161
+ )
3162
+ ] })
3123
3163
  ] }),
3124
3164
  /* @__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
3165
  /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Icon2, { name: "search", size: "md", className: "opacity-40" }),
@@ -3153,34 +3193,29 @@ function AssetSelector({
3153
3193
  {
3154
3194
  ticker: option.ticker,
3155
3195
  logoUri: option.icon,
3156
- size: 32,
3196
+ size: 38,
3157
3197
  className: cn(
3158
- "transition-transform duration-200",
3198
+ "shrink-0 transition-transform duration-200",
3159
3199
  !isDisabled && "group-hover:scale-[1.04]"
3160
3200
  )
3161
3201
  }
3162
3202
  ),
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" })
3203
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "flex min-w-0 flex-1 items-center justify-between gap-3 text-left", children: [
3204
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "min-w-0 flex flex-col leading-tight", children: [
3205
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "truncate text-base font-bold tracking-wide text-white", children: option.name ?? option.ticker }),
3206
+ option.network && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "mt-1", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3207
+ NetworkBadge,
3208
+ {
3209
+ network: option.network,
3210
+ showLabel: true,
3211
+ size: "sm",
3212
+ className: "py-[1px]"
3213
+ }
3214
+ ) })
3177
3215
  ] }),
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
- ] })
3216
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "flex shrink-0 flex-col items-end gap-0.5", children: [
3217
+ 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 }),
3218
+ /* @__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
3219
  ] })
3185
3220
  ] })
3186
3221
  ]
@@ -448,9 +448,15 @@ declare function AccountNetworkNotice({ network, children, }: {
448
448
  network: AccountSettingsNetwork;
449
449
  children: ReactNode;
450
450
  }): react_jsx_runtime.JSX.Element;
451
- declare function AccountStatusPills({ status, network, }: {
451
+ declare function AccountStatusPills({ status, network, hideNetworkChip, }: {
452
452
  status: 'ready' | 'offline' | 'optional' | string;
453
453
  network: AccountSettingsNetwork;
454
+ /**
455
+ * Drop the network (MAINNET / Regtest / …) chip. Used on the Settings
456
+ * main page where the network is implicit context and the chip is
457
+ * design noise next to the connected/offline status.
458
+ */
459
+ hideNetworkChip?: boolean;
454
460
  }): react_jsx_runtime.JSX.Element;
455
461
  declare function SectionTitle({ children }: {
456
462
  children: ReactNode;
@@ -470,13 +476,19 @@ declare function TransferRouteCard({ label, summary, eta, feeHint, }: {
470
476
  declare function ExpandIcon({ expanded }: {
471
477
  expanded: boolean;
472
478
  }): react_jsx_runtime.JSX.Element;
473
- declare function AccountSettingsRow({ accountId, title, status, network, description, onClick, }: {
479
+ declare function AccountSettingsRow({ accountId, title, status, network, description, onClick, hideNetworkChip, accent, }: {
474
480
  accountId: AccountSettingsProtocol;
475
481
  title: string;
476
482
  status: 'ready' | 'offline' | 'optional' | string;
477
483
  network: AccountSettingsNetwork;
478
484
  description: string;
479
485
  onClick: () => void;
486
+ /** Drop the MAINNET / Regtest pill — useful in Settings where the row
487
+ is one of many and the network chip is redundant noise. */
488
+ hideNetworkChip?: boolean;
489
+ /** Render the row with the per-account accent gradient (used on the
490
+ Settings main page so account rows mirror dashboard asset cards). */
491
+ accent?: boolean;
480
492
  }): react_jsx_runtime.JSX.Element;
481
493
 
482
494
  interface AccountCapabilitiesCardProps {
@@ -448,9 +448,15 @@ declare function AccountNetworkNotice({ network, children, }: {
448
448
  network: AccountSettingsNetwork;
449
449
  children: ReactNode;
450
450
  }): react_jsx_runtime.JSX.Element;
451
- declare function AccountStatusPills({ status, network, }: {
451
+ declare function AccountStatusPills({ status, network, hideNetworkChip, }: {
452
452
  status: 'ready' | 'offline' | 'optional' | string;
453
453
  network: AccountSettingsNetwork;
454
+ /**
455
+ * Drop the network (MAINNET / Regtest / …) chip. Used on the Settings
456
+ * main page where the network is implicit context and the chip is
457
+ * design noise next to the connected/offline status.
458
+ */
459
+ hideNetworkChip?: boolean;
454
460
  }): react_jsx_runtime.JSX.Element;
455
461
  declare function SectionTitle({ children }: {
456
462
  children: ReactNode;
@@ -470,13 +476,19 @@ declare function TransferRouteCard({ label, summary, eta, feeHint, }: {
470
476
  declare function ExpandIcon({ expanded }: {
471
477
  expanded: boolean;
472
478
  }): react_jsx_runtime.JSX.Element;
473
- declare function AccountSettingsRow({ accountId, title, status, network, description, onClick, }: {
479
+ declare function AccountSettingsRow({ accountId, title, status, network, description, onClick, hideNetworkChip, accent, }: {
474
480
  accountId: AccountSettingsProtocol;
475
481
  title: string;
476
482
  status: 'ready' | 'offline' | 'optional' | string;
477
483
  network: AccountSettingsNetwork;
478
484
  description: string;
479
485
  onClick: () => void;
486
+ /** Drop the MAINNET / Regtest pill — useful in Settings where the row
487
+ is one of many and the network chip is redundant noise. */
488
+ hideNetworkChip?: boolean;
489
+ /** Render the row with the per-account accent gradient (used on the
490
+ Settings main page so account rows mirror dashboard asset cards). */
491
+ accent?: boolean;
480
492
  }): react_jsx_runtime.JSX.Element;
481
493
 
482
494
  interface AccountCapabilitiesCardProps {
package/dist/web/index.js CHANGED
@@ -2270,7 +2270,8 @@ function AccountNetworkNotice({
2270
2270
  }
2271
2271
  function AccountStatusPills({
2272
2272
  status,
2273
- network
2273
+ network,
2274
+ hideNetworkChip = false
2274
2275
  }) {
2275
2276
  const statusUi = getAccountStatusUi(status);
2276
2277
  const networkUi = getAccountNetworkUi(network);
@@ -2285,7 +2286,7 @@ function AccountStatusPills({
2285
2286
  children: statusUi.label === "Ready" ? "Connected" : statusUi.label
2286
2287
  }
2287
2288
  ),
2288
- /* @__PURE__ */ jsx30(
2289
+ !hideNetworkChip && /* @__PURE__ */ jsx30(
2289
2290
  "span",
2290
2291
  {
2291
2292
  className: cn(
@@ -2346,20 +2347,30 @@ function TransferRouteCard({
2346
2347
  function ExpandIcon({ expanded }) {
2347
2348
  return /* @__PURE__ */ jsx30(Icon2, { name: expanded ? "expand_less" : "expand_more", size: "md" });
2348
2349
  }
2350
+ var ACCOUNT_ACCENT_BG = {
2351
+ RGB: "bg-gradient-to-br from-primary/[0.06] via-card to-primary/[0.10]",
2352
+ SPARK: "bg-gradient-to-br from-info/[0.06] via-card to-info/[0.10]",
2353
+ ARKADE: "bg-gradient-to-br from-network-arkade/[0.06] via-card to-network-arkade/[0.10]"
2354
+ };
2349
2355
  function AccountSettingsRow({
2350
2356
  accountId,
2351
2357
  title,
2352
2358
  status,
2353
2359
  network,
2354
2360
  description,
2355
- onClick
2361
+ onClick,
2362
+ hideNetworkChip = false,
2363
+ accent = false
2356
2364
  }) {
2357
2365
  return /* @__PURE__ */ jsx30(
2358
2366
  "button",
2359
2367
  {
2360
2368
  type: "button",
2361
2369
  onClick,
2362
- className: "w-full rounded-3xl bg-white/[0.03] p-4 text-left shadow-inner transition-colors hover:bg-white/[0.05]",
2370
+ className: cn(
2371
+ "w-full rounded-3xl p-4 text-left shadow-inner transition-colors hover:brightness-110",
2372
+ accent ? ACCOUNT_ACCENT_BG[accountId] : "bg-white/[0.03] hover:bg-white/[0.05]"
2373
+ ),
2363
2374
  children: /* @__PURE__ */ jsxs18("div", { className: "flex items-start gap-3", children: [
2364
2375
  /* @__PURE__ */ jsx30(AccountHeaderIcons, { accountId }),
2365
2376
  /* @__PURE__ */ jsxs18("div", { className: "min-w-0 flex-1", children: [
@@ -2370,7 +2381,14 @@ function AccountSettingsRow({
2370
2381
  ] }),
2371
2382
  /* @__PURE__ */ jsx30(Icon2, { name: "chevron_right", size: "sm", className: "text-white/40" })
2372
2383
  ] }),
2373
- /* @__PURE__ */ jsx30("div", { className: "mt-3", children: /* @__PURE__ */ jsx30(AccountStatusPills, { status, network }) })
2384
+ /* @__PURE__ */ jsx30("div", { className: "mt-3", children: /* @__PURE__ */ jsx30(
2385
+ AccountStatusPills,
2386
+ {
2387
+ status,
2388
+ network,
2389
+ hideNetworkChip
2390
+ }
2391
+ ) })
2374
2392
  ] })
2375
2393
  ] })
2376
2394
  }
@@ -2947,24 +2965,46 @@ function AssetSelector({
2947
2965
  }
2948
2966
  )
2949
2967
  ] }),
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(
2968
+ hasCategoryFilters && /*
2969
+ * Multi-select category chips — spec calls for "Filter and
2970
+ * Order menus (like in Blog)" but multi-select is the more
2971
+ * useful behaviour for an asset picker (lets the user see
2972
+ * stables + RWA together while comparing) and chips are
2973
+ * more discoverable than a dropdown for 3 short labels.
2974
+ * Restyle the chips to read as borderless pills consistent
2975
+ * with the rest of the modal, and add a small "Clear"
2976
+ * affordance when at least one chip is off so the user
2977
+ * can return to "all" without toggling each one.
2978
+ */
2979
+ /* @__PURE__ */ jsxs22("div", { className: "mt-3 flex flex-wrap items-center gap-1.5", children: [
2980
+ categories.map((category) => {
2981
+ const isActive = activeCategories.includes(category.id);
2982
+ return /* @__PURE__ */ jsx34(
2983
+ "button",
2984
+ {
2985
+ type: "button",
2986
+ onClick: () => setActiveCategories(
2987
+ (current) => current.includes(category.id) ? current.filter((value) => value !== category.id) : [...current, category.id]
2988
+ ),
2989
+ className: cn(
2990
+ "rounded-full px-2.5 py-1 text-tiny font-bold uppercase tracking-wide shadow-inner transition-colors",
2991
+ isActive ? "bg-primary/[0.14] text-primary" : "bg-surface-card text-text-dimmed hover:text-white/75"
2992
+ ),
2993
+ children: category.label
2994
+ },
2995
+ category.id
2996
+ );
2997
+ }),
2998
+ activeCategories.length !== categories.length && /* @__PURE__ */ jsx34(
2953
2999
  "button",
2954
3000
  {
2955
3001
  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
- }) })
3002
+ onClick: () => setActiveCategories(categories.map((category) => category.id)),
3003
+ 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",
3004
+ children: "All"
3005
+ }
3006
+ )
3007
+ ] })
2968
3008
  ] }),
2969
3009
  /* @__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
3010
  /* @__PURE__ */ jsx34(Icon2, { name: "search", size: "md", className: "opacity-40" }),
@@ -2998,34 +3038,29 @@ function AssetSelector({
2998
3038
  {
2999
3039
  ticker: option.ticker,
3000
3040
  logoUri: option.icon,
3001
- size: 32,
3041
+ size: 38,
3002
3042
  className: cn(
3003
- "transition-transform duration-200",
3043
+ "shrink-0 transition-transform duration-200",
3004
3044
  !isDisabled && "group-hover:scale-[1.04]"
3005
3045
  )
3006
3046
  }
3007
3047
  ),
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" })
3048
+ /* @__PURE__ */ jsxs22("div", { className: "flex min-w-0 flex-1 items-center justify-between gap-3 text-left", children: [
3049
+ /* @__PURE__ */ jsxs22("div", { className: "min-w-0 flex flex-col leading-tight", children: [
3050
+ /* @__PURE__ */ jsx34("span", { className: "truncate text-base font-bold tracking-wide text-white", children: option.name ?? option.ticker }),
3051
+ option.network && /* @__PURE__ */ jsx34("span", { className: "mt-1", children: /* @__PURE__ */ jsx34(
3052
+ NetworkBadge,
3053
+ {
3054
+ network: option.network,
3055
+ showLabel: true,
3056
+ size: "sm",
3057
+ className: "py-[1px]"
3058
+ }
3059
+ ) })
3022
3060
  ] }),
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
- ] })
3061
+ /* @__PURE__ */ jsxs22("div", { className: "flex shrink-0 flex-col items-end gap-0.5", children: [
3062
+ 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 }),
3063
+ /* @__PURE__ */ jsx34("span", { className: "text-tiny font-medium uppercase tracking-wide text-white/35", children: isDisabled ? "In use" : option.ticker })
3029
3064
  ] })
3030
3065
  ] })
3031
3066
  ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kaleido-ui",
3
- "version": "0.1.25",
3
+ "version": "0.1.27",
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",