mirror of
https://github.com/luxfi/explore.git
synced 2026-07-27 05:54:15 +00:00
- wallet: brandFamilyChains derives sibling networks (Lux mainnet/testnet/devnet)
from the multi-tenant chain registry so connect/add presents EVERY registered
network for the brand, not just the env chain; dedupe by id.
- login/menu: useProvider queryFn returns null (react-query v5 forbids undefined)
+ callers switched from '= {}' destructure default to '?? {}' so a null result
no longer crashes the wallet hooks (the busted-menu root cause).
- manifest: fix Pars chainId 7070 -> 494949 (regression) and drop the forbidden
'Subnet' term from sovereign L1 network names (-> '<Brand> Network').
- Validators page + /api/pchain proxy present; rebuild makes the live 5-validator
view visible on explore.lux.network.
Co-authored-by: Hanzo Dev <dev@hanzo.ai>
264 lines
11 KiB
CSS
264 lines
11 KiB
CSS
@import "tailwindcss" layer(tailwind);
|
|
@import "../styles/tokens.css";
|
|
|
|
@plugin "tailwindcss-animate";
|
|
|
|
/*
|
|
* Scan the @luxfi/ui component library for Tailwind classes.
|
|
*
|
|
* @luxfi/ui ships pre-built components whose className strings use arbitrary
|
|
* Tailwind utilities that resolve design tokens — e.g. the popover / menu /
|
|
* drawer surfaces are styled with bg-[var(--color-popover-bg)],
|
|
* bg-[var(--color-drawer-bg)], shadow-[var(--shadow-popover)] and
|
|
* border-[var(--color-popover-border)]. Tailwind v4 does not scan node_modules
|
|
* by default, so without this @source those utilities are purged and every
|
|
* floating panel (Sign-in popover, Blockchain menu, chain/network selectors,
|
|
* mobile nav drawer) renders with a transparent background — the page bleeds
|
|
* through and the content is unreadable. Sourcing the package makes Tailwind
|
|
* emit the utilities so the panels get their solid token-driven backgrounds.
|
|
*/
|
|
@source "../node_modules/@luxfi/ui";
|
|
|
|
/*
|
|
* Tailwind v4 theme configuration
|
|
*
|
|
* Breakpoints match Chakra: sm=415px, lg=1000px, xl=1440px, 2xl=1920px
|
|
* Dark mode via .dark class (next-themes "class" strategy)
|
|
* Font families: Geist (body/heading), Geist Mono (mono)
|
|
*/
|
|
@theme {
|
|
/* --- Breakpoints --- */
|
|
--breakpoint-sm: 415px;
|
|
--breakpoint-lg: 1000px;
|
|
--breakpoint-xl: 1440px;
|
|
--breakpoint-2xl: 1920px;
|
|
|
|
/* --- Font Families --- */
|
|
--font-sans: "Geist", sans-serif;
|
|
--font-heading: "Geist", sans-serif;
|
|
--font-mono: "Geist Mono", monospace;
|
|
|
|
/* --- Colors (mapped from CSS custom properties) --- */
|
|
--color-bg-primary: var(--color-bg-primary);
|
|
--color-bg-info: var(--color-bg-info);
|
|
--color-bg-body: var(--color-bg-body);
|
|
|
|
--color-fg-info: var(--color-fg-info);
|
|
|
|
--color-text-primary: var(--color-text-primary);
|
|
--color-text-secondary: var(--color-text-secondary);
|
|
--color-text-error: var(--color-text-error);
|
|
--color-text-success: var(--color-text-success);
|
|
|
|
--color-heading: var(--color-heading);
|
|
|
|
--color-icon-primary: var(--color-icon-primary);
|
|
--color-icon-secondary: var(--color-icon-secondary);
|
|
|
|
--color-border-divider: var(--color-border-divider);
|
|
--color-border-error: var(--color-border-error);
|
|
--color-border-info: var(--color-border-info);
|
|
|
|
--color-link-primary: var(--color-link-primary);
|
|
--color-link-primary-hover: var(--color-link-primary-hover);
|
|
--color-link-secondary: var(--color-link-secondary);
|
|
|
|
--color-hover: var(--color-hover);
|
|
--color-selected-control-bg: var(--color-selected-control-bg);
|
|
--color-selected-control-text: var(--color-selected-control-text);
|
|
--color-selected-option-bg: var(--color-selected-option-bg);
|
|
|
|
--color-button-solid-bg: var(--color-button-solid-bg);
|
|
--color-button-solid-text: var(--color-button-solid-text);
|
|
--color-button-outline-fg: var(--color-button-outline-fg);
|
|
--color-button-subtle-fg: var(--color-button-subtle-fg);
|
|
--color-button-subtle-bg: var(--color-button-subtle-bg);
|
|
--color-button-dropdown-fg: var(--color-button-dropdown-fg);
|
|
--color-button-dropdown-border: var(--color-button-dropdown-border);
|
|
--color-button-header-fg: var(--color-button-header-fg);
|
|
--color-button-header-fg-selected: var(--color-button-header-fg-selected);
|
|
--color-button-header-fg-highlighted: var(--color-button-header-fg-highlighted);
|
|
--color-button-header-border: var(--color-button-header-border);
|
|
--color-button-header-bg-selected: var(--color-button-header-bg-selected);
|
|
--color-button-header-bg-highlighted: var(--color-button-header-bg-highlighted);
|
|
--color-button-pagination-fg: var(--color-button-pagination-fg);
|
|
--color-button-pagination-border: var(--color-button-pagination-border);
|
|
--color-button-hero-bg: var(--color-button-hero-bg);
|
|
--color-button-hero-fg: var(--color-button-hero-fg);
|
|
--color-button-hero-bg-hover: var(--color-button-hero-bg-hover);
|
|
--color-button-hero-fg-hover: var(--color-button-hero-fg-hover);
|
|
--color-button-hero-bg-selected: var(--color-button-hero-bg-selected);
|
|
--color-button-hero-fg-selected: var(--color-button-hero-fg-selected);
|
|
--color-button-segmented-fg: var(--color-button-segmented-fg);
|
|
--color-button-icon-bg: var(--color-button-icon-bg);
|
|
--color-button-icon-background-bg: var(--color-button-icon-background-bg);
|
|
|
|
--color-nav-bg-selected: var(--color-nav-bg-selected);
|
|
--color-nav-text-selected: var(--color-nav-text-selected);
|
|
|
|
--color-input-fg: var(--color-input-fg);
|
|
--color-input-bg: var(--color-input-bg);
|
|
--color-input-border: var(--color-input-border);
|
|
--color-input-border-hover: var(--color-input-border-hover);
|
|
--color-input-placeholder: var(--color-input-placeholder);
|
|
|
|
--color-dialog-bg: var(--color-dialog-bg);
|
|
--color-dialog-fg: var(--color-dialog-fg);
|
|
--color-popover-bg: var(--color-popover-bg);
|
|
--color-drawer-bg: var(--color-drawer-bg);
|
|
|
|
--color-tooltip-bg: var(--color-tooltip-bg);
|
|
--color-tooltip-fg: var(--color-tooltip-fg);
|
|
|
|
--color-table-header-bg: var(--color-table-header-bg);
|
|
--color-table-header-fg: var(--color-table-header-fg);
|
|
|
|
--color-alert-fg: var(--color-alert-fg);
|
|
--color-alert-bg-info: var(--color-alert-bg-info);
|
|
--color-alert-bg-warning: var(--color-alert-bg-warning);
|
|
--color-alert-bg-success: var(--color-alert-bg-success);
|
|
--color-alert-bg-error: var(--color-alert-bg-error);
|
|
|
|
--color-skeleton-start: var(--color-skeleton-start);
|
|
--color-skeleton-end: var(--color-skeleton-end);
|
|
|
|
--color-progress-track: var(--color-progress-track);
|
|
--color-stats-bg: var(--color-stats-bg);
|
|
--color-topbar-bg: var(--color-topbar-bg);
|
|
|
|
--color-graph-line: var(--color-graph-line);
|
|
--color-graph-gradient-start: var(--color-graph-gradient-start);
|
|
--color-graph-gradient-stop: var(--color-graph-gradient-stop);
|
|
|
|
--color-scrollbar-thumb: var(--color-scrollbar-thumb);
|
|
--color-selection-bg: var(--color-selection-bg);
|
|
|
|
/* --- Tabs colors --- */
|
|
--color-tabs-solid-fg: var(--color-tabs-solid-fg);
|
|
--color-tabs-secondary-fg: var(--color-tabs-secondary-fg);
|
|
--color-tabs-secondary-border: var(--color-tabs-secondary-border);
|
|
|
|
/* --- Badge colors --- */
|
|
--color-badge-gray-bg: var(--color-badge-gray-bg);
|
|
--color-badge-gray-fg: var(--color-badge-gray-fg);
|
|
--color-badge-green-bg: var(--color-badge-green-bg);
|
|
--color-badge-green-fg: var(--color-badge-green-fg);
|
|
--color-badge-red-bg: var(--color-badge-red-bg);
|
|
--color-badge-red-fg: var(--color-badge-red-fg);
|
|
--color-badge-purple-bg: var(--color-badge-purple-bg);
|
|
--color-badge-purple-fg: var(--color-badge-purple-fg);
|
|
--color-badge-orange-bg: var(--color-badge-orange-bg);
|
|
--color-badge-orange-fg: var(--color-badge-orange-fg);
|
|
--color-badge-blue-bg: var(--color-badge-blue-bg);
|
|
--color-badge-blue-fg: var(--color-badge-blue-fg);
|
|
--color-badge-yellow-bg: var(--color-badge-yellow-bg);
|
|
--color-badge-yellow-fg: var(--color-badge-yellow-fg);
|
|
--color-badge-teal-bg: var(--color-badge-teal-bg);
|
|
--color-badge-teal-fg: var(--color-badge-teal-fg);
|
|
--color-badge-cyan-bg: var(--color-badge-cyan-bg);
|
|
--color-badge-cyan-fg: var(--color-badge-cyan-fg);
|
|
--color-badge-pink-bg: var(--color-badge-pink-bg);
|
|
--color-badge-pink-fg: var(--color-badge-pink-fg);
|
|
--color-badge-purple-alt-bg: var(--color-badge-purple-alt-bg);
|
|
--color-badge-purple-alt-fg: var(--color-badge-purple-alt-fg);
|
|
--color-badge-blue-alt-bg: var(--color-badge-blue-alt-bg);
|
|
--color-badge-blue-alt-fg: var(--color-badge-blue-alt-fg);
|
|
--color-badge-bright-gray-bg: var(--color-badge-bright-gray-bg);
|
|
--color-badge-bright-gray-fg: var(--color-badge-bright-gray-fg);
|
|
--color-badge-bright-green-bg: var(--color-badge-bright-green-bg);
|
|
--color-badge-bright-green-fg: var(--color-badge-bright-green-fg);
|
|
--color-badge-bright-red-bg: var(--color-badge-bright-red-bg);
|
|
--color-badge-bright-red-fg: var(--color-badge-bright-red-fg);
|
|
--color-badge-bright-blue-bg: var(--color-badge-bright-blue-bg);
|
|
--color-badge-bright-blue-fg: var(--color-badge-bright-blue-fg);
|
|
--color-badge-bright-yellow-bg: var(--color-badge-bright-yellow-bg);
|
|
--color-badge-bright-yellow-fg: var(--color-badge-bright-yellow-fg);
|
|
--color-badge-bright-teal-bg: var(--color-badge-bright-teal-bg);
|
|
--color-badge-bright-teal-fg: var(--color-badge-bright-teal-fg);
|
|
--color-badge-bright-cyan-bg: var(--color-badge-bright-cyan-bg);
|
|
--color-badge-bright-cyan-fg: var(--color-badge-bright-cyan-fg);
|
|
--color-badge-bright-orange-bg: var(--color-badge-bright-orange-bg);
|
|
--color-badge-bright-orange-fg: var(--color-badge-bright-orange-fg);
|
|
--color-badge-bright-purple-bg: var(--color-badge-bright-purple-bg);
|
|
--color-badge-bright-purple-fg: var(--color-badge-bright-purple-fg);
|
|
--color-badge-bright-pink-bg: var(--color-badge-bright-pink-bg);
|
|
--color-badge-bright-pink-fg: var(--color-badge-bright-pink-fg);
|
|
|
|
/* --- Static palette colors --- */
|
|
--color-gray-50: #FAFAFA;
|
|
--color-gray-100: #F5F5F5;
|
|
--color-gray-200: #E5E5E5;
|
|
--color-gray-300: #D4D4D4;
|
|
--color-gray-400: #A3A3A3;
|
|
--color-gray-500: #737373;
|
|
--color-gray-600: #525252;
|
|
--color-gray-700: #404040;
|
|
--color-gray-800: #262626;
|
|
--color-gray-900: #171717;
|
|
|
|
--color-green-50: #F0FFF4;
|
|
--color-green-100: #C6F6D5;
|
|
--color-green-200: #9AE6B4;
|
|
--color-green-500: #38A169;
|
|
--color-green-800: #22543D;
|
|
|
|
--color-red-50: #FFF5F5;
|
|
--color-red-100: #FED7D7;
|
|
--color-red-200: #FEB2B2;
|
|
--color-red-500: #E53E3E;
|
|
--color-red-600: #C53030;
|
|
--color-red-800: #822727;
|
|
|
|
--color-orange-50: #FFFAF0;
|
|
--color-orange-100: #FEEBCB;
|
|
--color-orange-500: #DD6B20;
|
|
|
|
--color-yellow-400: #ECC94B;
|
|
|
|
--color-white: #FFFFFF;
|
|
--color-black: #000000;
|
|
|
|
/* --- Shadows --- */
|
|
--shadow-action-bar: var(--shadow-action-bar);
|
|
--shadow-popover: var(--shadow-popover);
|
|
--shadow-drawer: var(--shadow-drawer);
|
|
|
|
/* --- Animations --- */
|
|
--animate-skeleton-shimmer: skeleton-shimmer 1.5s ease-in-out infinite;
|
|
}
|
|
|
|
@keyframes skeleton-shimmer {
|
|
0% { background-position: 200% 0; }
|
|
100% { background-position: -200% 0; }
|
|
}
|
|
|
|
/*
|
|
* Dark mode: use .dark class (next-themes)
|
|
* Tailwind v4 default is prefers-color-scheme; override to class-based.
|
|
*/
|
|
@custom-variant dark (&:is(.dark *));
|
|
|
|
/*
|
|
* Scope Tailwind to a layer so it does not override Chakra styles.
|
|
* Chakra styles have no layer, so they win by default cascade rules.
|
|
* New Tailwind components explicitly opt in via utility classes.
|
|
*/
|
|
|
|
@font-face {
|
|
font-family: 'InterFallback';
|
|
src: url('/static/fonts/Inter-fallback.woff2') format('woff2');
|
|
unicode-range: U+2192; /* Only the right arrow */
|
|
font-display: swap;
|
|
}
|
|
|
|
/*
|
|
* Global font and body styles.
|
|
* Geist is loaded via Google Fonts in _document.tsx.
|
|
* Apply it universally so Chakra components inherit it too.
|
|
*/
|
|
html, body {
|
|
font-family: 'Geist', sans-serif;
|
|
-webkit-font-smoothing: antialiased;
|
|
-moz-osx-font-smoothing: grayscale;
|
|
}
|