starlight-theme-obsidian
Version:
A Starlight theme inspired by the Obsidian Publish website theme
426 lines (345 loc) • 11.6 kB
CSS
@layer obsidian {
/* Remove border of mobile preferences */
div.mobile-preferences.mobile-preferences {
border-top: unset;
}
a.sl-anchor-link {
color: var(--sl-color-gray-3);
}
/* Remove border between page heading and content */
div.content-panel.content-panel {
border-top: unset;
}
/* Remove border between content and right sidebar */
.right-sidebar {
border-inline-start: unset;
}
/* Add border to footer */
footer {
border-top: 1px solid var(--sl-color-hairline);
padding-top: 1rem;
.meta {
margin-top: unset;
}
}
/* --------------------------------------------------- */
/* ------------- Site sidebar styling ---------------- */
/* Align site actions and links in row */
.social-icons {
display: flex;
gap: 1rem;
padding: 0 1rem;
}
.social-icons::after {
border-inline-end: unset;
}
.sidebar {
.mobile-preferences {
display: flex;
flex-wrap: nowrap;
column-gap: 0;
}
.social-icons {
flex: 1;
flex-wrap: wrap;
}
starlight-obsidian-theme-select {
flex: 0;
align-self: flex-start;
> button {
padding-left: 0;
}
}
}
.sidebar-content {
div.md\:sl-hidden {
display: none;
}
}
/* --------------------------------------------------- */
/* ------------- General Content Styling ------------- */
.sl-markdown-content {
/* Add margin around horizontal lines */
:is(.inc-spec, hr) {
margin: 2rem 0 0 0;
}
/* Use accent color for hovering over link elements */
a:hover:not(:where(.not-content *)) {
color: var(--sl-color-accent);
}
}
/* Steps line styling (Adapted from @HiDeoo/starlight-theme-rapide) */
.sl-steps > li:last-of-type:after {
background: linear-gradient(to bottom, var(--sl-color-hairline-light), var(--sl-color-bg) 85%);
}
/* --------------------------------------------------- */
/* -------- Obsidian-inspired Callout Styling -------- */
.starlight-aside {
border-radius: var(--sl-border-radius-md);
border: unset;
}
/* --------------------------------------------------- */
/* ------------------ Badge Styling ------------------ */
.sl-badge.sl-badge {
border-radius: var(--sl-border-radius-sm);
border: unset;
}
/* Impossible to disable variable override, so it needs to be specified each time */
.sidebar-content a[aria-current="page"] > .sl-badge.sl-badge {
color: var(--sl-color-text-badge);
background-color: var(--sl-color-bg-badge);
&.default {
--sl-color-bg-badge: var(--sl-badge-default-bg);
}
&.note {
--sl-color-bg-badge: var(--sl-badge-note-bg);
}
&.danger {
--sl-color-bg-badge: var(--sl-badge-danger-bg);
}
&.success {
--sl-color-bg-badge: var(--sl-badge-success-bg);
}
&.tip {
--sl-color-bg-badge: var(--sl-badge-tip-bg);
}
&.caution {
--sl-color-bg-badge: var(--sl-badge-caution-bg);
}
}
/* --------------------------------------------------- */
/* ----- Starlight components background styling ----- */
starlight-file-tree {
background-color: var(--sl-color-black);
border: unset;
border-radius: var(--sl-border-radius-md);
}
.card {
border-radius: var(--sl-border-radius-md);
border-color: var(--sl-color-hairline);
}
.card .icon {
border: unset;
}
.sl-banner {
padding: 1rem;
margin: 1rem 1rem 0rem 1rem;
border-radius: var(--sl-border-radius-lg);
}
/* --------------------------------------------------- */
/* ---------------- Draft styling -------------------- */
.content-panel .sl-container > h1 + p.sl-flex {
border: unset;
border-radius: var(--sl-border-radius-md);
margin: 0.5rem auto 0 auto;
}
/* --------------------------------------------------- */
/* ------------ Expressive Code styling -------------- */
.sl-markdown-content {
.expressive-code.expressive-code pre {
--code-background: var(--sl-color-black);
border: unset;
border-radius: var(--sl-border-radius-sm);
}
code {
border-radius: var(--sl-border-radius-sm);
}
.expressive-code .ec-line mark::before, .expressive-code .ec-line ins::before, .expressive-code .ec-line del::before {
border: unset;
}
.expressive-code .ec-line .code {
border-inline-start: unset;
}
.expressive-code .frame {
border: unset;
border-radius: var(--sl-border-radius-md);
&.is-terminal, &.has-title {
outline: 1px solid var(--sl-color-hairline);
}
& > .header.header.header {
border: unset;
border-bottom: 1px solid var(--sl-color-hairline);
border-radius: var(--sl-border-radius-md) var(--sl-border-radius-md) 0 0;
background: var(--sl-color-black);
&::after {
content: unset;
}
}
&:not(.is-terminal) {
.header {
&&::before {
content: "";
border: unset;
}
.title {
margin: -1px 0 0 -1px;
&:first-child {
border-radius: var(--sl-border-radius-md) 0 0 0;
}
&::after {
border-top: unset;
border-bottom: 2px solid var(--sl-color-accent);
}
}
}
}
pre {
border-color: var(--sl-color-hairline);
}
}
}
/* --------------------------------------------------- */
/* ---- Style details to add left rounded border ----- */
.sl-markdown-content {
details {
position: relative;
border-inline-start: unset;
}
details::before {
content: '';
display: inline-block;
background: var(--sl-details-border-color);
width: 5px;
height: 100%;
top: 0;
left: 0;
border-radius: 140px;
position: absolute;
}
details:hover {
--sl-details-border-color: var(--sl-details-border-color--hover);
}
}
/* --------------------------------------------------- */
/* --------------- Link Button Styling --------------- */
.sl-link-button {
--sl-color-text-accent: var(--sl-color-accent-high);
&.primary:hover {
background-color: var(--sl-color-accent);
color: var(--sl-color-black);
border-color: transparent;
}
&.secondary:hover {
border-color: var(--sl-color-accent);
}
&.minimal:hover {
background-color: unset;
color: var(--sl-color-accent);
}
}
/* --------------------------------------------------- */
/* ----------------- Link Card Styling --------------- */
.sl-link-card {
border-radius: var(--sl-border-radius-md);
border: unset;
padding: 1rem;
margin: 1rem 0;
background-color: var(--sl-color-black);
box-shadow: 0 0 0 1px var(--sl-color-hairline);
}
.sl-link-card:hover {
background-color: var(--sl-color-black);
box-shadow: 0 0 0 1px var(--sl-color-accent);
}
/* --------------------------------------------------- */
/* ------------------- ToC Styling ------------------- */
/* Adapted from @HiDeoo/starlight-theme-rapide */
.sidebar-pane summary {
flex-direction: row-reverse;
gap: 0.375rem;
justify-content: start;
padding: 0.2em var(--sl-sidebar-item-padding-inline);
padding-inline: calc(var(--sl-sidebar-item-padding-inline) / 2) var(--sl-sidebar-item-padding-inline);
}
.sidebar-pane summary:is(:hover, :focus-visible),
.sidebar-pane summary:is(:hover, :focus-visible) .large {
color: var(--sl-color-accent-high);
}
.sidebar-pane ul ul li {
margin-inline-start: calc(var(--sl-sidebar-item-padding-inline) + (0.625rem / 2));
}
.sidebar-pane a[aria-current='page'] {
background-color: initial;
color: var(--sl-color-text-accent);
}
.sidebar-pane ul ul li:has(> a[aria-current='page']) {
border-inline-start-color: var(--sl-color-accent-high);
}
.sidebar-pane ul ul li:has(> a:not([aria-current='page']):is(:hover, :focus-visible)) {
border-inline-start-color: var(--sl-color-gray-2);
}
.sidebar-pane ul summary:is(:hover, :focus-visible) + ul > li {
border-inline-start-color: var(--sl-color-gray-2);
}
/* --------------------------------------------------- */
/* ---------------- Graph Styling -------------------- */
@media (min-width: 72em) {
.right-sidebar .slsg-graph-component {
width: unset;
max-width: var(--slsg-graph-width);
}
}
.slsg-graph-container {
width: 100%;
}
/* ----------------------------------------------------------- */
/* ------------------ Scrollbar Styling ---------------------- */
.sidebar-pane {
scrollbar-width: thin;
}
body {
scrollbar-color: var(--sl-color-hairline) transparent;
scrollbar-gutter: stable;
&::-webkit-scrollbar {
width: 12px;
}
&::-webkit-scrollbar-track {
background: transparent;
}
}
/* ----------------------------------------------------------- */
/* ------------------ Pagination override -------------------- */
/* Adapted from @HiDeoo/starlight-theme-rapide */
.pagination-links {
display: flex;
column-gap: unset;
row-gap: unset;
}
.pagination-links a {
border: unset;
box-shadow: unset;
padding: 0;
align-items: unset;
column-gap: unset;
display: block;
}
.pagination-links a[rel='next'] {
margin-left: auto;
text-align: end;
}
.pagination-links a[rel='next'] div {
justify-content: flex-end;
}
.pagination-links a div {
align-items: center;
column-gap: 0.15rem;
row-gap: 0.15rem;
color: var(--sl-color-gray-3);
display: flex;
line-height: 24.5px;
font-size: var(--sl-text-sm);
}
.pagination-links a p {
font-size: var(--sl-text-md);
font-weight: 600;
margin: 4px;
color: var(--sl-color-gray-2);
}
.pagination-links a:is(:hover, :focus-visible) div {
color: var(--sl-color-gray-2);
}
.pagination-links a:is(:hover, :focus-visible) p {
color: var(--sl-color-white);
}
/* ----------------------------------------------------------- */
}