@import "highlight.js/styles/github-dark.css"; /* Content: code block node */ .tiptap-code-block-wrapper { position: relative; margin: 0.75em 0; } .tiptap-code-block-controls { position: absolute; top: 0.5rem; right: 0.5rem; z-index: 1; display: flex; gap: 0.25rem; align-items: center; } .tiptap-code-block-lang-btn { padding: 0.15rem 0.5rem; font-size: 0.75rem; font-family: var(--font-sans); color: var(--color-zinc-500); background-color: transparent; border: 1px solid transparent; border-radius: 0.25rem; cursor: pointer; opacity: 0.5; transition: color 0.15s, border-color 0.15s, opacity 0.15s; user-select: none; line-height: 1.4; } .tiptap-code-block-wrapper:hover .tiptap-code-block-lang-btn:not(:disabled), .tiptap-code-block-lang-btn:not(:disabled):hover { opacity: 1; color: var(--color-zinc-400); border-color: var(--color-zinc-700); } /* Read-only: lock the language label at a quiet opacity with no hover affordance so it reads as a corner label, not a clickable control. */ .tiptap-code-block-lang-btn:disabled { cursor: default; opacity: 0.6; } .tiptap-code-block-copy-btn { display: inline-flex; align-items: center; justify-content: center; padding: 0.25rem; color: var(--color-zinc-500); background-color: transparent; border: 1px solid transparent; border-radius: 0.25rem; cursor: pointer; opacity: 0.5; transition: color 0.15s, border-color 0.15s, opacity 0.15s, background-color 0.15s; line-height: 1; } .tiptap-code-block-wrapper:hover .tiptap-code-block-copy-btn, .tiptap-code-block-copy-btn:hover { opacity: 1; color: var(--color-zinc-300); border-color: var(--color-zinc-700); } .tiptap-code-block-copy-btn [data-copy-icon-default], .tiptap-code-block-copy-btn [data-copy-icon-copied] { display: inline-flex; } .tiptap-code-block-copy-btn [data-copy-icon-copied], .tiptap-code-block-copy-btn[data-copied="true"] [data-copy-icon-default] { display: none; } .tiptap-code-block-copy-btn[data-copied="true"] { color: #4ade80; } .tiptap-code-block-copy-btn[data-copied="true"] [data-copy-icon-copied] { display: inline-flex; } .tiptap-code-block-pre { font-family: var(--font-mono); font-size: 0.875rem; background-color: var(--color-zinc-900); border: 1px solid var(--color-zinc-800); border-radius: 0.5rem; padding: 0.75rem 1rem; overflow-x: auto; white-space: pre; color: var(--color-zinc-300); } .tiptap-code-block-content { display: block; min-width: 100%; background: none; border-radius: 0; padding: 0; font-size: inherit; color: inherit; white-space: inherit; } /* Overlay: code block language menu */ .tiptap-code-block-lang-dropdown { display: flex; flex-direction: column; gap: 1px; padding: 4px; max-height: 240px; overflow-y: auto; } .tiptap-code-block-lang-item { display: block; width: 100%; padding: 6px 10px; text-align: left; font-size: 0.8125rem; color: var(--color-zinc-300); background: none; border: none; border-radius: 0.375rem; cursor: pointer; transition: background-color 0.1s; } .tiptap-code-block-lang-item:hover { background-color: var(--color-zinc-700); color: var(--color-zinc-100); } .tiptap-code-block-lang-item.is-active { background-color: color-mix(in srgb, var(--color-accent-500) 10%, transparent); color: var(--color-accent-400); } .tiptap-code-block-lang-item.is-active:hover { background-color: color-mix(in srgb, var(--color-accent-500) 18%, transparent); color: var(--color-accent-200); }