Path: blob/main/src/vs/sessions/contrib/remoteAgentHost/browser/media/hostPickerSheet.css
13406 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45/* ---- Mobile Host Picker bottom sheet ----6* Slides up from the bottom of the viewport over a translucent backdrop.7* Replaces the desktop context menu / anchored dropdown for the host8* picker on phone-sized layouts. */910.host-picker-sheet-overlay {11position: fixed;12inset: 0;13z-index: 2000;14display: flex;15flex-direction: column;16justify-content: flex-end;17pointer-events: none;18}1920.host-picker-sheet-overlay > * {21pointer-events: auto;22}2324.host-picker-sheet-backdrop {25position: absolute;26inset: 0;27background: rgba(0, 0, 0, 0.4);28animation: host-picker-sheet-fade-in 180ms ease-out;29}3031.host-picker-sheet-backdrop.closing {32animation: host-picker-sheet-fade-out 180ms ease-in forwards;33}3435.host-picker-sheet {36position: relative;37width: 100%;38max-height: 80vh;39display: flex;40flex-direction: column;41background: var(--vscode-menu-background, var(--vscode-editor-background));42color: var(--vscode-menu-foreground, var(--vscode-foreground));43border-top-left-radius: 16px;44border-top-right-radius: 16px;45padding-bottom: env(safe-area-inset-bottom);46box-shadow: 0 -8px 24px rgba(0, 0, 0, 0.25);47animation: host-picker-sheet-slide-up 220ms cubic-bezier(0.2, 0.9, 0.3, 1);48overflow: hidden;49}5051.host-picker-sheet.closing {52animation: host-picker-sheet-slide-down 180ms ease-in forwards;53}5455/* iOS-style drag-handle hint. Decorative — drag-to-dismiss is not wired up. */56.host-picker-sheet-handle {57width: 36px;58height: 4px;59margin: 8px auto 4px;60border-radius: 2px;61background: color-mix(in srgb, var(--vscode-foreground) 30%, transparent);62flex-shrink: 0;63}6465.host-picker-sheet-header {66display: flex;67align-items: center;68gap: 8px;69padding: 8px 16px 4px;70flex-shrink: 0;71}7273.host-picker-sheet-title {74flex: 1;75min-width: 0;76font-size: 16px;77font-weight: 600;78overflow: hidden;79text-overflow: ellipsis;80white-space: nowrap;81}8283.host-picker-sheet-close {84display: flex;85align-items: center;86justify-content: center;87width: 36px;88height: 36px;89border: none;90background: transparent;91color: var(--vscode-foreground);92cursor: pointer;93border-radius: 50%;94flex-shrink: 0;95font-size: 16px;96padding: 0;97touch-action: manipulation;98}99100.host-picker-sheet-close:active {101background: var(--vscode-toolbar-hoverBackground);102}103104.host-picker-sheet-subtitle {105padding: 0 16px 12px;106color: var(--vscode-descriptionForeground);107font-size: 13px;108line-height: 1.4;109flex-shrink: 0;110}111112.host-picker-sheet-body {113flex: 1 1 auto;114overflow-y: auto;115-webkit-overflow-scrolling: touch;116}117118.host-picker-sheet-section-title {119padding: 12px 16px 4px;120font-size: 11px;121font-weight: 500;122text-transform: uppercase;123letter-spacing: 0.05em;124color: var(--vscode-descriptionForeground);125}126127.host-picker-sheet-divider {128height: 1px;129margin: 8px 16px;130background: color-mix(in srgb, var(--vscode-foreground) 12%, transparent);131}132133/* --- Host row -------------------------------------------------------- */134135.host-picker-sheet-item {136display: flex;137align-items: center;138gap: 12px;139width: 100%;140min-height: 56px;141padding: 8px 16px;142border: none;143background: transparent;144color: inherit;145font-size: 15px;146text-align: left;147cursor: pointer;148touch-action: manipulation;149font-family: inherit;150}151152.host-picker-sheet-item:focus {153outline: none;154}155156.host-picker-sheet-item:focus-visible {157outline: 2px solid var(--vscode-focusBorder);158outline-offset: -2px;159}160161.host-picker-sheet-item:active {162background: var(--vscode-toolbar-hoverBackground);163}164165.host-picker-sheet-item.checked .host-picker-sheet-item-name {166font-weight: 600;167color: var(--vscode-menu-selectionForeground, var(--vscode-foreground));168}169170.host-picker-sheet-item-icon {171position: relative;172width: 28px;173height: 28px;174display: flex;175align-items: center;176justify-content: center;177color: var(--vscode-foreground);178flex-shrink: 0;179}180181.host-picker-sheet-item-icon .codicon {182font-size: 18px;183}184185/* Small status dot in the bottom-right of the host icon. */186.host-picker-sheet-item-status {187position: absolute;188right: 0;189bottom: 0;190width: 8px;191height: 8px;192border-radius: 50%;193background: var(--vscode-descriptionForeground);194border: 2px solid var(--vscode-menu-background, var(--vscode-editor-background));195box-sizing: content-box;196}197198.host-picker-sheet-item-status.connected {199background: var(--vscode-testing-iconPassed, var(--vscode-debugIcon-startForeground, #388a34));200}201202.host-picker-sheet-item-status.connecting {203background: var(--vscode-debugIcon-startForeground, #388a34);204animation: host-picker-sheet-blink 1.2s ease-in-out infinite;205}206207.host-picker-sheet-item-text {208flex: 1;209min-width: 0;210display: flex;211flex-direction: column;212gap: 2px;213}214215.host-picker-sheet-item-name {216overflow: hidden;217text-overflow: ellipsis;218white-space: nowrap;219}220221.host-picker-sheet-item-sub {222font-size: 12px;223color: var(--vscode-descriptionForeground);224overflow: hidden;225text-overflow: ellipsis;226white-space: nowrap;227}228229.host-picker-sheet-item-check {230width: 20px;231display: flex;232align-items: center;233justify-content: center;234color: var(--vscode-textLink-foreground, var(--vscode-button-background));235font-size: 14px;236flex-shrink: 0;237}238239/* --- Empty state ----------------------------------------------------- */240241.host-picker-sheet-empty {242display: flex;243flex-direction: column;244align-items: center;245gap: 4px;246padding: 16px;247color: var(--vscode-descriptionForeground);248font-size: 13px;249text-align: center;250}251252/* --- Footer (always-visible re-discover action) ---------------------- */253254.host-picker-sheet-footer {255flex-shrink: 0;256border-top: 1px solid color-mix(in srgb, var(--vscode-foreground) 12%, transparent);257}258259.host-picker-sheet-action {260display: flex;261align-items: center;262gap: 12px;263width: 100%;264min-height: 48px;265padding: 0 16px;266border: none;267background: transparent;268color: var(--vscode-textLink-foreground, var(--vscode-button-background));269font-size: 14px;270font-weight: 500;271text-align: left;272cursor: pointer;273touch-action: manipulation;274font-family: inherit;275}276277.host-picker-sheet-action:active {278background: var(--vscode-toolbar-hoverBackground);279}280281.host-picker-sheet-action[aria-disabled='true'] {282opacity: 0.6;283cursor: default;284}285286.host-picker-sheet-action-icon {287width: 20px;288display: flex;289align-items: center;290justify-content: center;291font-size: 14px;292}293294.host-picker-sheet-action.discovering .host-picker-sheet-action-icon .codicon {295animation: host-picker-sheet-spin 1.2s linear infinite;296}297298@keyframes host-picker-sheet-slide-up {299from {300transform: translateY(100%);301}302to {303transform: translateY(0);304}305}306307@keyframes host-picker-sheet-slide-down {308from {309transform: translateY(0);310}311to {312transform: translateY(100%);313}314}315316@keyframes host-picker-sheet-fade-in {317from {318opacity: 0;319}320to {321opacity: 1;322}323}324325@keyframes host-picker-sheet-fade-out {326from {327opacity: 1;328}329to {330opacity: 0;331}332}333334@keyframes host-picker-sheet-blink {3350%, 100% {336opacity: 0.5;337}33850% {339opacity: 1;340}341}342343@keyframes host-picker-sheet-spin {344from {345transform: rotate(0deg);346}347to {348transform: rotate(360deg);349}350}351352353