.bookmarks-page.grid { grid-gap: $unit-9; } /* Bookmark area header controls */ .bookmarks-page .content-area-header { --searchbox-max-width: 350px; @media (max-width: $size-sm) { --searchbox-max-width: initial; flex-direction: column; } } .bookmarks-page .search-container { flex: 1 1 0; display: flex; justify-content: flex-end; // Regular input input[type='search'] { height: $control-size; -webkit-appearance: none; } // Enhanced auto-complete input // This needs a bit more wrangling to make the CSS component align with the attached button .form-autocomplete { height: $control-size; .form-autocomplete-input { width: 100%; height: $control-size; input[type='search'] { width: 100%; height: 100%; margin: 0; border: none; } } } .input-group { flex: 1 1 0; min-width: var(--searchbox-min-width); max-width: var(--searchbox-max-width); } .input-group > :first-child { flex: 1 1 0; } // Group search options button with search button .input-group input[type='submit'] { border-top-right-radius: 0; border-bottom-right-radius: 0; } .dropdown-toggle { border-top-left-radius: 0; border-bottom-left-radius: 0; } .dropdown { margin-left: -1px; } // Search option menu styles .dropdown { .menu { padding: $unit-4; min-width: 250px; font-size: $font-size-sm; } .menu .actions { margin-top: $unit-4; display: flex; justify-content: space-between; } .radio-group { margin-bottom: $unit-1; .form-label { padding-bottom: 0; } .form-radio.form-inline { margin: 0 $unit-2 0 0; padding: 0; display: inline-flex; align-items: center; column-gap: $unit-1; } .form-icon { top: 0; position: relative; } } } } /* Bookmark list */ ul.bookmark-list { list-style: none; margin: 0; padding: 0; /* Increase line-height for better separation within / between items */ line-height: 1.1rem; } @keyframes appear { 0% { opacity: 0; } 90% { opacity: 0; } 100% { opacity: 1; } } /* Bookmarks */ li[ld-bookmark-item] { position: relative; display: flex; gap: $unit-2; margin-top: $unit-2; .content { flex: 1 1 0; min-width: 0; } img.preview-image { flex: 0 0 auto; width: 100px; height: 60px; margin-top: $unit-h; object-fit: cover; border-radius: $border-radius; border: solid 1px $border-color-dark; } .form-checkbox.bulk-edit-checkbox { display: none; } .title { position: relative; } .title img { position: absolute; width: 16px; height: 16px; left: 0; top: 50%; transform: translateY(-50%); pointer-events: none; } .title img + a { padding-left: 22px; } .title a { display: block; width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .title a[data-tooltip]:hover::after, .title a[data-tooltip]:focus::after { content: attr(data-tooltip); position: absolute; z-index: 10; top: 100%; left: 50%; transform: translateX(-50%); width: max-content; max-width: 90%; height: fit-content; background-color: #292f62; color: #fff; padding: $unit-1; border-radius: $border-radius; border: 1px solid #424a8c; font-size: $font-size-sm; font-style: normal; white-space: normal; pointer-events: none; animation: 0.3s ease 0s appear; } @media (pointer:coarse) { .title a[data-tooltip]::after { display: none; } } &.unread .title a { font-style: italic; } .url-path, .url-display { font-size: $font-size-sm; color: $secondary-link-color; } .description { color: $gray-color-dark; } .description.separate { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: var(--ld-bookmark-description-max-lines, 1); overflow: hidden; } .tags { a, a:visited:hover { color: $alternative-color; } } .actions, .extra-actions { display: flex; align-items: baseline; flex-wrap: wrap; column-gap: $unit-2; } @media (max-width: $size-sm) { .extra-actions { width: 100%; margin-top: $unit-1; } } .actions { font-size: $font-size-sm; a, button.btn-link { color: $gray-color; padding: 0; height: auto; vertical-align: unset; border: none; transition: none; text-decoration: none; &:focus, &:hover, &:active, &.active { color: $gray-color-dark; } } } } .bookmark-pagination { margin-top: $unit-4; } .tag-cloud { /* Increase line-height for better separation within / between items */ line-height: 1.1rem; .selected-tags { margin-bottom: $unit-4; a, a:visited:hover { color: $error-color; } } .unselected-tags { a, a:visited:hover { color: $alternative-color; } } .group { margin-bottom: $unit-2; } .highlight-char { font-weight: bold; text-transform: uppercase; color: $alternative-color-dark; } } /* Bookmark notes */ ul.bookmark-list { .notes { display: none; max-height: 300px; margin: $unit-1 0; overflow-y: auto; } .notes .markdown { padding: $unit-2 $unit-3; } &.show-notes .notes, li.show-notes .notes { display: block; } } /* Bookmark bulk edit */ $bulk-edit-toggle-width: 16px; $bulk-edit-toggle-offset: 8px; $bulk-edit-bar-offset: $bulk-edit-toggle-width + (2 * $bulk-edit-toggle-offset); $bulk-edit-transition-duration: 400ms; [ld-bulk-edit] { .bulk-edit-bar { margin-top: -1px; margin-left: -$bulk-edit-bar-offset; margin-bottom: $unit-3; max-height: 0; overflow: hidden; transition: max-height $bulk-edit-transition-duration; } &.active .bulk-edit-bar { max-height: 37px; border-bottom: solid 1px $border-color; } /* remove overflow after opening animation, otherwise tag autocomplete overlay gets cut off */ &.active:not(.activating) .bulk-edit-bar { overflow: visible; } /* All checkbox */ .form-checkbox.bulk-edit-checkbox.all { display: block; width: $bulk-edit-toggle-width; margin: 0 0 0 $bulk-edit-toggle-offset; padding: 0; } /* Bookmark checkboxes */ li[ld-bookmark-item] .form-checkbox.bulk-edit-checkbox { display: block; position: absolute; width: $bulk-edit-toggle-width; min-height: $bulk-edit-toggle-width; left: -$bulk-edit-toggle-width - $bulk-edit-toggle-offset; top: 50%; transform: translateY(-50%); padding: 0; margin: 0; visibility: hidden; opacity: 0; transition: all $bulk-edit-transition-duration; .form-icon { top: 0; } } &.active li[ld-bookmark-item] .form-checkbox.bulk-edit-checkbox { visibility: visible; opacity: 1; } /* Actions */ .bulk-edit-actions { display: flex; align-items: center; padding: $unit-1 0; border-top: solid 1px $border-color; gap: $unit-2; button { padding: 0 !important; } button:hover { text-decoration: underline; } > input, .form-autocomplete, select { width: auto; max-width: 140px; -webkit-appearance: none; } .select-across { margin: 0 0 0 auto; font-size: $font-size-sm; } } }