mirror of
https://github.com/luxfi/explore.git
synced 2026-09-24 00:28:18 +00:00
The magnifying glass was drawn over the leading "S" of the placeholder. The cause is not the search bar: @luxfi/ui's InputGroup measures its adornments correctly and then throws the measurement away, because the clone is guarded on `displayName === 'FieldInput'` — a component that does not exist in the package — and the props it would have set (`ps`/`pe`) are Chakra style props that the Tailwind/gui Input spreads onto the DOM and ignores. Both halves are leftovers of the Chakra→Tailwind port, so EVERY InputGroup in the app is unpadded; the header is just the one you look at every day. Patched at the primitive (patches/@[email protected]) rather than hand-tuning padding at one call site: the offset is the measured width of the actual adornment, so it stays right when the adornment changes, and FilterInput / revoke's SearchInput / the showcase are fixed by the same change. Measured at 1440x900: the icon overlapped the text by 24px and the kbd chip by 52px; both are now 0. The measurement also moves to a layout effect and stops blanking value and placeholder on first render. That blanking was inert while the guard swallowed the clone; with the clone live it flips the field from controlled to uncontrolled on mount, which React warns about and which can eat a keystroke. ClearButton spread `className` over its own visibility classes, so a caller passing one clobbered `invisible` — the header showed a clear button on an empty field. Merged instead, at the component. Placeholder is now "Search or ask anything", and Cmd/Ctrl-K opens an assistant. Nothing in this repo, @luxfi/ui or @hanzo/gui ships a command palette or chat (no cmdk, no palette, one dialog primitive), so this is the smallest thing that works: the existing Dialog, one global listener, and a server-side proxy that holds the credential. The key is deliberately not NEXT_PUBLIC_, so a deployment without one gets a dialog that says exactly that instead of failing silently. Off unless NEXT_PUBLIC_AI_ASSISTANT_ENABLED is set — Ctrl+K is the browser's address-bar shortcut and claiming it to show an error would be worse than not claiming it. Validators read 5 on a network running 20. useCurrentValidators asks ONE P-Chain, the one this deployment points at, but Lux, Hanzo, Zoo and Pars are each sovereign L1s with their own P-Chain and their own validator set — measured 2026-08-06, five each, with four disjoint NodeID sets. The registry gains the node origin per chain; absence of it is the signal that a chain has no publicly reachable node (SPC and Osage are in-cluster only), and those are reported `unavailable` rather than counted as zero. Stake is deliberately NOT summed: each chain bonds its own currency. The proxy resolves `?chain=` through the registry and never from the request, so it cannot be pointed at an arbitrary origin. The new envs are registered with the envs-validator and documented in ENVS.md — the schema rejects unknown NEXT_PUBLIC_* variables and runs at container start, so an undeclared one stops the pod from booting. Co-authored-by: Hanzo Dev <[email protected]>
53 lines
2.9 KiB
TypeScript
53 lines
2.9 KiB
TypeScript
export { default as advancedFilter } from './advancedFilter';
|
|
export { default as account } from './account';
|
|
export { default as aiAssistant } from './aiAssistant';
|
|
export { default as addressVerification } from './addressVerification';
|
|
export { default as addressMetadata } from './addressMetadata';
|
|
export { default as address3rdPartyWidgets } from './address3rdPartyWidgets';
|
|
export { default as adsBanner } from './adsBanner';
|
|
export { default as adsText } from './adsText';
|
|
export { default as apiDocs } from './apiDocs';
|
|
export { default as beaconChain } from './beaconChain';
|
|
export { default as bridgedTokens } from './bridgedTokens';
|
|
export { default as blockchainInteraction } from './blockchainInteraction';
|
|
export { default as celo } from './celo';
|
|
export { default as crossChainTxs } from './crossChainTxs';
|
|
export { default as csvExport } from './csvExport';
|
|
export { default as dataAvailability } from './dataAvailability';
|
|
export { default as deFiDropdown } from './deFiDropdown';
|
|
export { default as easterEggBadge } from './easterEggBadge';
|
|
export { default as easterEggPuzzleBadge } from './easterEggPuzzleBadge';
|
|
export { default as externalTxs } from './externalTxs';
|
|
export { default as faultProofSystem } from './faultProofSystem';
|
|
export { default as flashblocks } from './flashblocks';
|
|
export { default as gasTracker } from './gasTracker';
|
|
export { default as getGasButton } from './getGasButton';
|
|
export { default as googleAnalytics } from './googleAnalytics';
|
|
export { default as hotContracts } from './hotContracts';
|
|
export { default as marketplace } from './marketplace';
|
|
export { default as megaEth } from './megaEth';
|
|
export { default as metasuites } from './metasuites';
|
|
export { default as mixpanel } from './mixpanel';
|
|
export { default as mudFramework } from './mudFramework';
|
|
export { default as multichain } from './multichain';
|
|
export { default as multichainButton } from './multichainButton';
|
|
export { default as nameServices } from './nameServices';
|
|
export { default as pools } from './pools';
|
|
export { default as publicTagsSubmission } from './publicTagsSubmission';
|
|
export { default as rewards } from './rewards';
|
|
export { default as rollbar } from './rollbar';
|
|
export { default as rollup } from './rollup';
|
|
export { default as safe } from './safe';
|
|
export { default as sol2uml } from './sol2uml';
|
|
export { default as stats } from './stats';
|
|
export { default as suave } from './suave';
|
|
export { default as tac } from './tac';
|
|
export { default as txInterpretation } from './txInterpretation';
|
|
export { default as userOps } from './userOps';
|
|
export { default as addressProfileAPI } from './addressProfileAPI';
|
|
export { default as validators } from './validators';
|
|
export { default as verifiedTokens } from './verifiedTokens';
|
|
export { default as web3Wallet } from './web3Wallet';
|
|
export { default as xStarScore } from './xStarScore';
|
|
export { default as zetachain } from './zetachain';
|