UNPKG

@broxus/tvm-connect

Version:

TypeScript SDK for connecting to Nekoton-compatible wallets using a unified interface.

540 lines (452 loc) 16.1 kB
[class*='tvm-connect-'] { --global-scroll-width: initial; /* Globals */ --global-color: var(--tvm-connect-color); --global-font-family: -apple-system, 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'Helvetica Neue', 'Arial', 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; --global-emphasis-color: var(--tvm-connect-emphasis-color); --global-muted-color: var(--tvm-connect-muted-color); --global-link-color: var(--tvm-connect-link-color); --global-link-hover-color: var(--tvm-connect-link-hover-color); --global-border: var(--tvm-connect-border); --global-border-style: solid; --global-border-width: 1px; --global-border-radius: var(--tvm-connect-border-radius); --global-gutter: 20px; --global-medium-gutter: var(--global-gutter); --global-large-gutter: var(--global-gutter); /* Base */ --base-body-color: var(--global-color); --base-body-font-family: var(--global-font-family); --base-link-color: var(--global-link-color); --base-link-hover-color: var(--global-link-hover-color); --base-link-text-decoration: none; --base-link-hover-text-decoration: none; --base-heading-color: var(--global-emphasis-color); --base-heading-font-family: var(--global-font-family); --base-heading-font-weight: 600; --base-heading-text-transform: none; /* Card */ --card-body-padding-horizontal: var(--global-gutter); --card-body-padding-vertical: var(--card-body-padding-horizontal); --card-small-body-padding-horizontal: var(--global-gutter); --card-small-body-padding-vertical: var(--card-body-padding-horizontal); /* Grid */ --grid-gutter-horizontal: var(--global-gutter); --grid-gutter-vertical: var(--grid-gutter-horizontal); --grid-gutter-horizontal-m: var(--global-medium-gutter); --grid-gutter-vertical-m: var(--grid-gutter-horizontal-m); --grid-gutter-horizontal-l: var(--global-large-gutter); --grid-gutter-vertical-l: var(--grid-gutter-horizontal-l); /* Description list */ --description-list-term-color: var(--global-emphasis-color); /* Drawer */ --drawer-close-position: var(--tvm-connect-modal-padding-horizontal); /* Modal */ --modal-width: var(--tvm-connect-modal-width); --modal-close-padding: 0px; --modal-close-position: calc(var(--tvm-connect-modal-padding-horizontal) - var(--modal-close-padding)); /* List */ --list-margin-top: var(--global-small-margin); --list-large-margin-top: var(--global-margin); /* Text */ --text-emphasis-color: var(--global-emphasis-color); --text-meta-color: var(--global-muted-color); --text-muted-color: var(--global-muted-color); font-family: var(--base-body-font-family), sans-serif; /* Component: Base */ a:not(.uk-button), .uk-link:not(.uk-button) { color: var(--base-link-color); cursor: pointer; text-decoration: var(--base-link-text-decoration); } a:not(.uk-button):hover, .uk-link:not(.uk-button):hover { color: var(--base-link-hover-color); text-decoration: var(--base-link-hover-text-decoration); } a:not(.uk-button):active, a:not(.uk-button):hover { outline: none; } dt { font-weight: bold; } dd { margin-left: 0; } h1, .uk-h1, h2, .uk-h2, h3, .uk-h3, h4, .uk-h4, h5, .uk-h5, h6, .uk-h6 { color: var(--base-heading-color); font-family: var(--base-heading-font-family), system-ui; font-weight: var(--base-heading-font-weight); margin: 0 0 var(--base-margin-vertical) 0; text-transform: var(--base-heading-text-transform); } h1, .uk-h1 { font-size: var(--base-h1-font-size); line-height: var(--base-h1-line-height); } h2, .uk-h2 { font-size: var(--base-h2-font-size); line-height: var(--base-h2-line-height); } h3, .uk-h3 { font-size: var(--base-h3-font-size); line-height: var(--base-h3-line-height); } h4, .uk-h4 { font-size: var(--base-h4-font-size); line-height: var(--base-h4-line-height); } h5, .uk-h5 { font-size: var(--base-h5-font-size); line-height: var(--base-h5-line-height); } h6, .uk-h6 { font-size: var(--base-h6-font-size); line-height: var(--base-h6-line-height); } /* Component: Button */ .uk-button { transition: background-color var(--transition-duration) var(--ease-in-out), border-color var(--transition-duration) var(--ease-in-out), color var(--transition-duration) var(--ease-in-out); } /* Component: Card */ .uk-card-default { background: none; border: var(--global-border-width) var(--global-border-style) var(--global-border); border-radius: var(--global-border-radius); } /* Component: Icon */ button.uk-icon:not(:disabled) { cursor: pointer; } .uk-icon::-moz-focus-inner { border: 0; padding: 0; } .uk-icon:not(.uk-preserve) [fill*='#']:not(.uk-preserve) { fill: currentColor; } .uk-icon:not(.uk-preserve) [stroke*='#']:not(.uk-preserve) { stroke: currentColor; } .uk-icon > * { transform: translate(0, 0); } /* Component: Dropdown */ .uk-dropdown { background: var(--tvm-connect-dropdown-background); box-sizing: border-box; color: var(--tvm-connect-dropdown-color); min-width: var(--dropdown-min-width); padding: var(--dropdown-padding); position: absolute; z-index: var(--dropdown-z-index); } .uk-dropdown-hidden { display: none; } [class*='uk-dropdown-placement-bottom'] { &.uk-slide-up-enter.uk-slide-up-enter-active, &.uk-slide-up-appear.uk-slide-up-appear-active { animation-name: uk-slide-up-in; } &.uk-slide-up-leave.uk-slide-up-leave-active { animation-name: uk-slide-up-out; } } [class*='uk-dropdown-placement-top'] { &.uk-slide-up-enter.uk-slide-up-enter-active, &.uk-slide-up-appear.uk-slide-up-appear-active { animation-name: uk-slide-down-in; } &.uk-slide-up-leave.uk-slide-up-leave-active { animation-name: uk-slide-down-out; } } /* Design system overrides */ .uk-copy-wrapper { align-items: center; cursor: pointer; display: inline-flex; justify-content: center; } .uk-explorer-link { align-items: center; column-gap: 8px; display: inline-flex; line-height: normal; } .uk-explorer-link:hover, .uk-explorer-link a:hover { text-decoration: none; } .uk-explorer-link .uk-copy-wrapper, .uk-explorer-link .uk-wallet-asset { cursor: pointer; } .uk-explorer-link .uk-icon-external, .uk-explorer-link .uk-copy-wrapper, .uk-explorer-link .uk-wallet-asset { line-height: 0; svg { height: var(--explorer-link-icon-size); width: var(--explorer-link-icon-size); } } .uk-wallet-account .uk-wallet-account-icon { position: relative; width: max-content; } .uk-wallet-account .uk-wallet-account-title { color: var(--global-color); } .uk-wallet-account .uk-wallet-account-subtitle { color: var(--global-muted-color); font-size: var(--global-xsmall-font-size); letter-spacing: 0.6px; line-height: 16px; white-space: nowrap; } .uk-wallet-account .uk-wallet-account-sub-icon { border-radius: 50%; bottom: -2px; display: flex; position: absolute; right: -2px; } } /* ======================================================================== Modal ======================================================================== */ .tvm-connect-modal > *:not([class]) { width: 100%; } .tvm-connect-modal .uk-modal-container { background: var(--tvm-connect-modal-background); border-radius: var(--tvm-connect-modal-border-radius); box-shadow: var(--tvm-connect-modal-box-shadow); color: var(--tvm-connect-modal-color); padding: var(--tvm-connect-modal-padding-vertical) var(--tvm-connect-modal-padding-horizontal); } .tvm-connect-modal .uk-modal-header { background: none; padding: 0 var(--tvm-connect-modal-header-padding-horizontal) var(--tvm-connect-modal-header-padding-vertical); } .tvm-connect-modal .uk-modal-title { color: var(--tvm-connect-modal-title-color); font-size: var(--tvm-connect-modal-title-font-size); font-weight: var(--tvm-connect-modal-title-font-weight); line-height: var(--tvm-connect-modal-title-line-height); text-align: center; } .tvm-connect-modal .uk-modal-body { padding: 0 var(--tvm-connect-modal-body-padding-horizontal); } .tvm-connect-modal .uk-modal-body:last-child { padding-bottom: 0; } .tvm-connect-modal .uk-modal-footer { background: none; padding: var(--tvm-connect-modal-footer-padding-vertical) var(--tvm-connect-modal-footer-padding-horizontal) 0; } /* ======================================================================== Drawer ======================================================================== */ .tvm-connect-drawer .uk-drawer-content-wrapper { --drawer-height: auto; } .tvm-connect-drawer .uk-drawer-content { background: var(--tvm-connect-drawer-content-background); border-radius: var(--tvm-connect-drawer-content-border-radius) var(--tvm-connect-drawer-content-border-radius) 0 0; box-shadow: none; color: var(--tvm-connect-drawer-content-color); padding: var(--tvm-connect-drawer-content-padding-vertical) var(--tvm-connect-drawer-content-padding-horizontal); } .tvm-connect-drawer .uk-drawer-header { padding: 0 var(--tvm-connect-drawer-header-padding-horizontal) var(--tvm-connect-drawer-header-padding-vertical); } .tvm-connect-drawer .uk-drawer-title { color: var(--tvm-connect-drawer-title-color); font-size: var(--tvm-connect-drawer-title-font-size); font-weight: var(--tvm-connect-drawer-title-font-weight); line-height: var(--tvm-connect-drawer-title-line-height); text-align: center; } .tvm-connect-drawer .uk-drawer-body { padding: 0 var(--tvm-connect-drawer-body-padding-horizontal); } .tvm-connect-drawer .uk-drawer-body:last-child { padding-bottom: 0; } /* Modal & Drawer close button */ .tvm-connect-modal .uk-modal-close-default, .tvm-connect-drawer .uk-drawer-close { color: var(--tvm-connect-muted-color); padding: var(--modal-close-padding); } .tvm-connect-modal .uk-modal-close-default:hover, .tvm-connect-modal .uk-modal-close-default:focus, .tvm-connect-drawer .uk-drawer-close:hover, .tvm-connect-drawer .uk-drawer-close:focus { color: var(--tvm-connect-color); } /* ======================================================================== Modal page ======================================================================== */ .tvm-modal-page { box-sizing: border-box; overflow-y: clip !important; padding-right: var(--global-scroll-width, 15px) !important; } .tvm-modal-page body { overflow: hidden; overflow: clip; } /* ======================================================================== Providers dispatcher ======================================================================== */ .tvm-connect-providers-dispatcher { backface-visibility: hidden; display: flex; flex-direction: column; height: inherit; overflow: hidden; transition: height var(--transition-fast-duration) var(--ease-in); width: inherit; } /* Modal & Drawer back button */ .tvm-connect-providers-dispatcher .tvm-connect-back-button { color: var(--tvm-connect-muted-color); left: var(--modal-close-position); line-height: 0; padding: var(--modal-close-padding); position: absolute; top: var(--modal-close-position); } .tvm-connect-providers-dispatcher .tvm-connect-back-button:hover, .tvm-connect-providers-dispatcher .tvm-connect-back-button:focus { color: var(--tvm-connect-color); } .tvm-connect-provider-content .tvm-connect-provider-content-title { color: var(--tvm-connect-color); font-weight: 600; margin-bottom: var(--global-small-margin, 10px); } /* ======================================================================== Providers list ======================================================================== */ .tvm-connect-provider-content .tvm-connect-providers-list { margin: 0; } .tvm-connect-providers-list .tvm-connect-provider-button.uk-button { align-content: center; align-items: center; background-color: var(--tvm-connect-provider-button-background); border: var(--tvm-connect-provider-button-border-width) var(--tvm-connect-provider-button-border-style) var(--tvm-connect-provider-button-border); border-radius: 8px; box-sizing: border-box; color: var(--tvm-connect-color); display: grid; gap: 16px; grid-auto-rows: max-content; grid-template-columns: 32px minmax(50%, 100%) auto; line-height: normal; min-height: 65px; padding: 0 20px; position: relative; text-align: left; width: 100%; } .tvm-connect-providers-list .tvm-connect-provider-button.uk-button:hover:not(:disabled), .tvm-connect-providers-list .tvm-connect-provider-button.uk-button:focus:not(:disabled) { background-color: var(--tvm-connect-provider-button-hover-background); border-color: var(--tvm-connect-provider-button-hover-border); color: var(--tvm-connect-provider-button-hover-color); } .tvm-connect-providers-list .tvm-connect-provider-title { color: var(--tvm-connect-color); font-size: 18px; font-weight: 500; } .tvm-connect-providers-list .tvm-connect-provider-subtitle { max-width: 100%; opacity: 0.8; } .tvm-connect-providers-list .tvm-connect-provider-connected, .tvm-connect-providers-list .tvm-connect-provider-recent { background: var(--tvm-connect-modal-background); border-radius: 3px; display: inline-block; font-size: 9px; justify-self: flex-end; padding: 1px 5px; position: absolute; right: 8px; text-transform: uppercase; top: 12px; } /* ======================================================================== QR Code ======================================================================== */ .tvm-connect-qrcode-wrapper { padding: 0 10%; } /* ======================================================================== Connector ======================================================================== */ .tvm-connect-connector { display: inline-flex; max-width: max-content; } .tvm-connect-connector .tvm-connect-connector-icon { background-color: var(--global-muted-background); border-radius: 50%; box-sizing: border-box; height: 32px; min-width: 32px; width: 32px; } .tvm-connect-connector .tvm-connect-connector-suffix { position: relative; } .tvm-connect-connector .tvm-connect-dropdown-trigger { align-items: center; cursor: pointer; display: flex; height: 100%; padding: var(--tvm-connect-dropdown-trigger-vertical-padding) var(--tvm-connect-dropdown-trigger-horizontal-padding); } /* Dropdown */ .tvm-connect-dropdown { background: var(--tvm-connect-dropdown-background); border-radius: var(--tvm-connect-dropdown-border-radius); box-shadow: var(--tvm-connect-dropdown-box-shadow); color: var(--tvm-connect-dropdown-color); min-width: fit-content !important; } .tvm-connect-dropdown .uk-button.uk-button-link { color: var(--tvm-connect-dropdown-link-color); } .tvm-connect-dropdown .uk-button.uk-button-link:hover, .tvm-connect-dropdown .uk-button.uk-button-link:focus { color: var(--tvm-connect-dropdown-link-hover-color); text-decoration: none; }