mirror of
https://github.com/max-fluff/obsidian-reference-linker.git
synced 2026-07-22 08:35:18 +00:00
413 lines
10 KiB
CSS
413 lines
10 KiB
CSS
/* Reference Linker 1.0.1 — assembled from the shared styles and src/styles.css by "npm run build". Do not edit directly. */
|
|
|
|
/* Styles every linker plugin uses. The token below stands for the plugin class prefix;
|
|
build.mjs substitutes it when it assembles styles.css. See CONTRIBUTING.md. */
|
|
|
|
.reference-linker-preview-table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
font-size: var(--font-ui-small);
|
|
}
|
|
|
|
.reference-linker-preview-buttons {
|
|
display: flex;
|
|
gap: 8px;
|
|
justify-content: flex-end;
|
|
margin-top: 16px;
|
|
}
|
|
|
|
.reference-linker-folder-row .setting-item-name {
|
|
font-family: var(--font-monospace);
|
|
font-size: var(--font-ui-smaller);
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.reference-linker-folder-add {
|
|
display: flex;
|
|
gap: 8px;
|
|
margin: 6px 0 18px 1.5em;
|
|
}
|
|
|
|
.reference-linker-folder-input {
|
|
flex: 1 1 auto;
|
|
min-width: 0;
|
|
}
|
|
|
|
.reference-linker-folder-addbtn {
|
|
display: flex;
|
|
flex: 0 0 auto;
|
|
align-items: center;
|
|
justify-content: center;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.reference-linker-folder-addbtn svg {
|
|
width: 16px;
|
|
height: 16px;
|
|
}
|
|
|
|
/* Priority order among the installed linker plugins. Our own row is the movable one, so
|
|
it is the one that reads as active; the others are context. */
|
|
.reference-linker-precedence-list {
|
|
margin: 0 0 18px 1.5em;
|
|
}
|
|
|
|
.reference-linker-precedence-list .setting-item {
|
|
border-top: none;
|
|
/* Padding matches the folder-list rows, so this nested list lines up with the other one in the same pane: text off the left edge, arrows level with the remove buttons. */ padding: 4px 6px 4px 0.75em;
|
|
}
|
|
|
|
.reference-linker-precedence-list .setting-item-name {
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.reference-linker-precedence-self .setting-item-name {
|
|
color: var(--text-normal);
|
|
font-weight: var(--font-semibold);
|
|
}
|
|
|
|
/* Styles both sigil linkers use. The plugin class prefix is substituted by build.mjs. */
|
|
|
|
.reference-linker-suggestion {
|
|
display: flex;
|
|
gap: 0.5em;
|
|
align-items: baseline;
|
|
}
|
|
|
|
.reference-linker-name {
|
|
font-weight: var(--font-semibold);
|
|
}
|
|
|
|
.reference-linker-kind {
|
|
color: var(--text-muted);
|
|
font-size: var(--font-ui-smaller);
|
|
}
|
|
|
|
.reference-linker-path {
|
|
margin-left: auto;
|
|
color: var(--text-faint);
|
|
font-size: var(--font-ui-smaller);
|
|
}
|
|
|
|
.reference-linker-input {
|
|
width: 100%;
|
|
}
|
|
|
|
/* Muted helper / status line under a control or section — one class for every such
|
|
note in the pane. .is-error tints it for a missing folder or other problem. */
|
|
.reference-linker-note {
|
|
color: var(--text-muted);
|
|
font-size: var(--font-ui-small);
|
|
margin: 4px 0 14px;
|
|
}
|
|
|
|
.reference-linker-note.is-error {
|
|
color: var(--text-error);
|
|
}
|
|
|
|
/* User editor preset rows: name + template + remove on one line, wrapping to
|
|
two lines on a narrow pane so nothing collides. The full control area is used
|
|
(the empty name label is hidden) and the theme styles the row like any other. */
|
|
.reference-linker-editor-row .setting-item-info {
|
|
display: none;
|
|
}
|
|
|
|
.reference-linker-editor-row .setting-item-control {
|
|
width: 100%;
|
|
flex-wrap: wrap;
|
|
justify-content: flex-start;
|
|
gap: 8px;
|
|
}
|
|
|
|
.reference-linker-editor-name {
|
|
flex: 1 1 140px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.reference-linker-editor-tpl {
|
|
flex: 3 1 240px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.reference-linker-hover {
|
|
position: fixed;
|
|
z-index: var(--layer-popover);
|
|
max-width: min(720px, 90vw);
|
|
box-shadow: var(--shadow-s);
|
|
user-select: text;
|
|
-webkit-user-select: text;
|
|
}
|
|
|
|
.reference-linker-hover.reference-linker-hidden {
|
|
display: none;
|
|
}
|
|
|
|
.reference-linker-embed {
|
|
margin: var(--p-spacing, 1em) 0;
|
|
}
|
|
|
|
.reference-linker-embed-error,
|
|
.reference-linker-embed-note {
|
|
padding: 6px 10px;
|
|
color: var(--text-muted);
|
|
font-size: var(--font-ui-smaller);
|
|
}
|
|
|
|
.reference-linker-embed-error {
|
|
color: var(--text-error);
|
|
}
|
|
|
|
/* Drifted line (stale) and renamed/removed symbol (broken), in both render modes.
|
|
A border-bottom rather than text-decoration: wavy/offset underlines render
|
|
inconsistently across platforms, so a plain border is the reliable choice. */
|
|
.reference-linker-stale,
|
|
.reference-linker-broken {
|
|
border-bottom-width: 1px;
|
|
border-bottom-style: var(--reference-linker-mark-underline-style, dotted);
|
|
}
|
|
|
|
.reference-linker-stale {
|
|
border-bottom-color: var(--reference-linker-stale-color, var(--text-warning));
|
|
}
|
|
|
|
.reference-linker-broken {
|
|
border-bottom-color: var(--reference-linker-broken-color, var(--text-error));
|
|
}
|
|
|
|
/* Nested sub-rows — searchable kinds under a language, and chosen folders under a
|
|
folder list — share one indent and compact height so the pane reads as one list
|
|
style. The kind rule is unqualified so it also indents the plain rebuild hint. */
|
|
.reference-linker-kind-row,
|
|
.reference-linker-folder-row {
|
|
margin-left: 1.5em;
|
|
padding-left: 0.75em;
|
|
border-left: 2px solid var(--background-modifier-border);
|
|
}
|
|
|
|
.reference-linker-kind-row.setting-item,
|
|
.reference-linker-folder-row.setting-item {
|
|
border-top: 0;
|
|
padding: 4px 6px 4px 0.75em;
|
|
}
|
|
|
|
.reference-linker-kind-row .setting-item-name {
|
|
font-size: 0.9em;
|
|
opacity: 0.85;
|
|
}
|
|
|
|
/* Folder-set editor: a full-width input with autocomplete and an add button below
|
|
the chosen-folder rows. */
|
|
.reference-linker-folder-rows:not(:empty) {
|
|
margin: 6px 0;
|
|
}
|
|
|
|
.reference-linker-preview-file {
|
|
font-weight: var(--font-semibold);
|
|
margin: 12px 0 4px;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.reference-linker-preview-table td {
|
|
border-bottom: 1px solid var(--background-modifier-border);
|
|
padding: 3px 8px;
|
|
text-align: left;
|
|
vertical-align: top;
|
|
}
|
|
|
|
.reference-linker-preview-pick {
|
|
width: 1%;
|
|
padding-right: 0;
|
|
vertical-align: middle;
|
|
}
|
|
|
|
.reference-linker-preview-move {
|
|
font-family: var(--font-monospace);
|
|
white-space: nowrap;
|
|
width: 1%;
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
/* A guessed move (file matched by symbol or basename), not a plain line drift — tinted so
|
|
it stands out for a closer look before applying. */
|
|
.reference-linker-preview-moved .reference-linker-preview-move {
|
|
color: var(--reference-linker-stale-color, var(--text-warning));
|
|
white-space: normal;
|
|
}
|
|
|
|
.reference-linker-preview-more,
|
|
.reference-linker-preview-empty {
|
|
color: var(--text-muted);
|
|
padding: 8px 0;
|
|
}
|
|
|
|
.reference-linker-preview-attention {
|
|
color: var(--reference-linker-broken-color, var(--text-error));
|
|
}
|
|
|
|
.reference-linker-preview-broken {
|
|
font-size: var(--font-ui-small);
|
|
color: var(--reference-linker-broken-color, var(--text-error));
|
|
padding: 2px 8px;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
/* @settings
|
|
|
|
name: Reference Linker
|
|
id: reference-linker
|
|
settings:
|
|
-
|
|
id: reference-linker-stale-color
|
|
title: Stale-link underline colour
|
|
description: Reference links whose target document has moved or is missing. Default follows the theme's warning colour.
|
|
type: variable-themed-color
|
|
format: hex
|
|
opacity: false
|
|
default-light: '#c1810b'
|
|
default-dark: '#e0a526'
|
|
-
|
|
id: reference-linker-broken-color
|
|
title: Broken-link underline colour
|
|
description: Reference links whose target document is gone. Default follows the theme's error colour.
|
|
type: variable-themed-color
|
|
format: hex
|
|
opacity: false
|
|
default-light: '#c4302b'
|
|
default-dark: '#e35555'
|
|
-
|
|
id: reference-linker-mark-underline-style
|
|
title: Stale / broken underline style
|
|
type: variable-select
|
|
default: dotted
|
|
options:
|
|
- dotted
|
|
- dashed
|
|
- solid
|
|
- double
|
|
|
|
*/
|
|
|
|
/* Chrome shared by the hover popover and the inline embed: a header above a body that holds
|
|
the rendered PDF page (canvas) or image. The popover is a fixed overlay; the embed flows
|
|
inline — otherwise the parts match. */
|
|
.reference-linker-hover,
|
|
.reference-linker-embed {
|
|
overflow: hidden;
|
|
background: var(--background-primary);
|
|
border: 1px solid var(--background-modifier-border);
|
|
border-radius: var(--radius-m);
|
|
}
|
|
|
|
.reference-linker-hover-header,
|
|
.reference-linker-embed-header {
|
|
padding: 4px 10px;
|
|
border-bottom: 1px solid var(--background-modifier-border);
|
|
color: var(--text-muted);
|
|
font-size: var(--font-ui-smaller);
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.reference-linker-embed {
|
|
width: fit-content;
|
|
max-width: 100%;
|
|
}
|
|
|
|
/* The header must not widen the frame, or a long title leaves the page floating in dead
|
|
space; zero intrinsic width + min-width lets it fill and ellipsize instead. */
|
|
.reference-linker-embed-header {
|
|
cursor: pointer;
|
|
width: 0;
|
|
min-width: 100%;
|
|
}
|
|
|
|
.reference-linker-hover-body,
|
|
.reference-linker-embed-body {
|
|
overflow: auto;
|
|
max-height: 60vh;
|
|
}
|
|
|
|
/* Stacked pages/sections of a range embed, set apart so the seam between them reads. */
|
|
.reference-linker-embed-slot + .reference-linker-embed-slot {
|
|
margin-top: 10px;
|
|
padding-top: 10px;
|
|
border-top: 1px solid var(--background-modifier-border);
|
|
}
|
|
|
|
/* Rendered PDF page (canvas) or image inside the popover / embed. */
|
|
.reference-linker-hover-body canvas,
|
|
.reference-linker-hover-body img,
|
|
.reference-linker-hover-body video,
|
|
.reference-linker-embed-body canvas,
|
|
.reference-linker-embed-body img,
|
|
.reference-linker-embed-body video {
|
|
display: block;
|
|
max-width: 100%;
|
|
height: auto;
|
|
}
|
|
|
|
/* Width is set inline from the request; a percentage here would collapse against the
|
|
shrink-to-fit popover. */
|
|
.reference-linker-hover-body audio,
|
|
.reference-linker-embed-body audio {
|
|
display: block;
|
|
max-width: 100%;
|
|
margin: 8px 4px;
|
|
}
|
|
|
|
/* Markdown and HTML preview as themselves. The width is set inline from the request; the
|
|
padding is what keeps rendered content off the popover border. */
|
|
.reference-linker-rendered {
|
|
padding: 10px 14px;
|
|
}
|
|
|
|
.reference-linker-rendered > :first-child {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.reference-linker-rendered > :last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.reference-linker-rendered img {
|
|
max-width: 100%;
|
|
height: auto;
|
|
}
|
|
|
|
.reference-linker-rendered pre {
|
|
overflow-x: auto;
|
|
}
|
|
|
|
/* The line preview: a heading and the lines under it, for formats with no markup to show. */
|
|
.reference-linker-doc {
|
|
padding: 10px 12px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 4px;
|
|
}
|
|
|
|
.reference-linker-doc-title {
|
|
font-weight: var(--font-semibold);
|
|
}
|
|
|
|
.reference-linker-doc-line {
|
|
color: var(--text-muted);
|
|
font-size: var(--font-ui-small);
|
|
}
|
|
|
|
.reference-linker-doc-empty {
|
|
color: var(--text-faint);
|
|
font-style: italic;
|
|
}
|
|
|
|
/* Update preview: each note is a checkable group, its link changes a compact table, and
|
|
the section that's gone is listed apart in the warning colour — so an update is something
|
|
you look over and confirm, not a blind sweep. */
|
|
.reference-linker-preview-check {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
}
|
|
|
|
/* Reference Linker 1.0.1 */
|