UNPKG

starlight-theme-rapide

Version:

Starlight theme inspired by the Visual Studio Code Vitesse theme.

680 lines (558 loc) 16 kB
@layer rapide { /** * Header */ header.header { -webkit-backdrop-filter: blur(0.5rem); backdrop-filter: blur(0.5rem); background-color: var(--sl-rapide-ui-header-bg-color); border-bottom: 1px solid var(--sl-color-gray-5); .site-title { font-size: var(--sl-text-h3); } .right-group { gap: 0; } .social-icons a { color: var(--sl-color-gray-2); &:hover { color: var(--sl-color-accent-high); opacity: 1; } &:last-child { margin-inline-end: -0.125rem; } } starlight-lang-select { label { --sl-label-icon-size: 1rem; &:is(:hover, :focus-within) { color: var(--sl-color-accent-high); } } select { box-sizing: content-box; width: calc(var(--sl-rapide-lang-select-width)); } } @media (prefers-reduced-transparency) { -webkit-backdrop-filter: initial; backdrop-filter: initial; background-color: var(--sl-color-black); } @media (min-width: 50rem) { &:not(:has(starlight-lang-select)) { padding-inline-end: calc(var(--sl-nav-pad-x) - 1rem); } } } starlight-menu-button { button { box-shadow: none; [data-theme='light'] & { background-color: var(--sl-color-white); color: var(--sl-color-black); } } [data-theme='light'] &[aria-expanded='true'] button { background-color: var(--sl-color-gray-2); } } /** * Search */ site-search { dialog { background-color: var(--sl-color-black); box-shadow: none; min-height: auto; .dialog-frame { padding: 1rem; } #starlight__search { --sl-search-corners: calc(0.5rem * var(--pagefind-ui-scale)); --pagefind-ui-border-radius: calc(0.5rem * var(--pagefind-ui-scale)); } .pagefind-ui__search-input { background-color: var(--sl-rapide-ui-bg-color); border: 1px solid var(--sl-color-gray-4); &:focus-visible { border-color: var(--sl-color-accent); outline: 1px solid var(--sl-color-accent); } } .pagefind-ui__message { padding-top: 0; &:has(+ .pagefind-ui__results:empty) { padding: 0; } } :is(.pagefind-ui__result-title:not(:where(.pagefind-ui__result-nested *)), .pagefind-ui__result-nested) { border-inline: 1px solid var(--sl-rapide-ui-border-color); outline-offset: -1px; &:not(:focus-within) { background-color: var(--sl-rapide-ui-bg-color); } } .pagefind-ui__result-inner { gap: 0; & > :first-child { border-top: 1px solid var(--sl-rapide-ui-border-color); } & > :last-child { border-bottom: 1px solid var(--sl-rapide-ui-border-color); } } .pagefind-ui__result-excerpt mark { color: var(--sl-color-accent-high); } @media (prefers-reduced-motion: no-preference) { &::backdrop { animation: sl-rapide-search-backdrop-fade 150ms ease-out; } & { animation: sl-rapide-search-dialog-zoom-in 150ms ease-out; } } } @media (min-width: 50rem) { div:has(> &) { justify-content: center; } } @media (min-width: 72rem) { div:has(> &) { max-width: calc(var(--sl-content-width)); } } } @keyframes sl-rapide-search-backdrop-fade { from { -webkit-backdrop-filter: initial; backdrop-filter: initial; background-color: transparent; } to { -webkit-backdrop-filter: blur(0.25rem); backdrop-filter: blur(0.25rem); background-color: var(--sl-color-backdrop-overlay); } } @keyframes sl-rapide-search-dialog-zoom-in { from { opacity: 0; transform: scale(0.5) translateY(-2rem); } to { opacity: 1; transform: scale(1) translateY(0); } } /** * Sidebar */ .sidebar-pane { border-inline-end: 1px solid var(--sl-color-gray-5); 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); &:is(:hover, :focus-visible) { &, & .large { color: var(--sl-color-accent-high); } } &:is(:hover, :focus-visible) + ul > li { border-inline-start-color: var(--sl-color-accent-high); } } ul ul li { margin-inline-start: calc(var(--sl-sidebar-item-padding-inline) + (0.625rem / 2)); &:has(> a[aria-current='page']) { border-inline-start-color: var(--sl-color-accent-high); } &:has(> a:not([aria-current='page']):is(:hover, :focus-visible)) { border-inline-start-color: var(--sl-color-gray-2); } } .top-level { & > li + li { margin-block: 0; } & > li + li:has(details), & > li:has(details) + li:not(:has(details)) { margin-top: 1rem; } & > li > .large { color: var(--sl-color-gray-2); font-size: var(--sl-text-sm); font-weight: inherit; &:is(:hover, :focus-visible) { color: var(--sl-color-white); } } } a[aria-current='page'] { background-color: initial; color: var(--sl-color-text-accent); } } /** * Content */ .content-panel { padding-top: 1rem; & + .content-panel { border-top: none; padding-top: 0; } h1 { margin-top: 0.5rem; @media (min-width: 72rem) { margin-top: 1rem; } } .meta { align-items: center; flex-direction: row-reverse; a { border: 1px solid var(--sl-color-gray-5); border-radius: 0.5rem; padding: 0.25rem 0.5rem; &:is(:hover, :focus-visible) { border-color: var(--sl-color-gray-2); color: var(--sl-color-gray-2); } } } } /** * Table of contents */ .right-sidebar { border-inline-start: initial; @media (min-width: 72rem) { padding-top: calc(var(--sl-nav-height) + 1.75rem); } starlight-toc li { & > a { border-inline-start: 1px solid var(--sl-color-hairline-light); border-radius: 0; margin-inline-start: 0.35rem; padding-inline-start: calc(1rem * var(--depth) + var(--pad-inline) + 0.35rem); &[aria-current='true'] { border-color: var(--sl-color-accent-high); &:is(:hover, :focus-visible) { color: var(--sl-color-accent-high); } } &:not([aria-current='true']):is(:hover, :focus-visible) { border-color: var(--sl-color-gray-2); } } } } /** * Mobile table of contents */ mobile-starlight-toc { nav { -webkit-backdrop-filter: blur(0.5rem); backdrop-filter: blur(0.5rem); background-color: var(--sl-rapide-ui-header-bg-color); border-bottom: 1px solid var(--sl-color-gray-5); border-top-color: transparent; @media (prefers-reduced-transparency) { -webkit-backdrop-filter: initial; backdrop-filter: initial; background-color: var(--sl-color-black); } details summary { border-bottom: initial; } &:has(details[open]) { -webkit-backdrop-filter: initial; backdrop-filter: initial; background-color: var(--sl-color-black); } } .dropdown { border: initial; border-bottom: var(--border-top) solid var(--sl-color-gray-6); a:is(:hover, :focus-visible) { background-color: var(--sl-rapide-ui-bg-color); color: var(--sl-color-accent-high); } } } /** * Markdown */ .sl-markdown-content { a:not(:where(.not-content *)) { color: var(--sl-color-white); text-underline-offset: 0.25em; &:is(:hover, :focus-visible) { color: var(--sl-color-accent-high); } } code:not(:where(.not-content *)) { border-radius: 5px; } tr:nth-child(2n):not(:where(.not-content *)) { background-color: var(--sl-color-gray-7); } :is(th, td):not(:where(.not-content *)) { border: none; } th:not(:where(.not-content *)) { border-bottom: 1px solid var(--sl-color-gray-4); } td:not(:where(.not-content *)) { border-bottom: 1px solid var(--sl-color-gray-5); } details:not(:where(.not-content *)) { --sl-details-border-color--hover: var(--sl-color-gray-2); border-inline-start-width: 1px; } .expressive-code { .has-title { --ec-uiPadBlk: 0.375rem; } .frame.is-terminal .header { border-bottom: 1px solid var(--sl-rapide-ui-border-color); } } } /** * Tabs */ starlight-tabs { .tablist-wrapper { overflow-y: hidden; } ul[role='tablist'] { border-bottom-width: 1px; a[role='tab'] { padding-block: 0.25rem; &:not([aria-selected='true']):hover { border-color: var(--sl-color-white); color: var(--sl-color-white); } } } } /** * Cards */ .card-grid.stagger { --stagger-height: 2.5rem; } .card { --sl-text-h1: var(--sl-text-4xl); --sl-text-h2: var(--sl-text-3xl); --sl-text-h3: var(--sl-text-2xl); --sl-text-h4: var(--sl-text-xl); --sl-text-h5: var(--sl-text-lg); border-radius: 0.5rem; padding: clamp(1rem, calc(0.125rem + 1.5vw), 2.5rem); .title .icon { font-size: 1.875rem; } } .sl-link-card { box-shadow: none; &:hover { background: initial; } .title { color: var(--sl-color-white); } .description { color: var(--sl-color-gray-3); } &:is(:hover, :focus-visible) .description { color: var(--sl-color-gray-2); } .icon { color: var(--sl-color-gray-2); } } /** * Asides */ .starlight-aside { &.starlight-aside--note { --sl-rapide-asides-bg-color: var(--sl-color-blue-low); --sl-rapide-asides-link-color: var(--sl-color-blue-accent); --sl-rapide-asides-link-hover-color: var(--sl-color-blue-accent-invert); --sl-rapide-asides-table-alt-color: var(--sl-color-blue-alt); --sl-rapide-asides-table-border-color: var(--sl-color-blue-alt-invert); } &.starlight-aside--tip { --sl-rapide-asides-bg-color: var(--sl-color-purple-low); --sl-rapide-asides-link-color: var(--sl-color-purple-accent); --sl-rapide-asides-link-hover-color: var(--sl-color-purple-accent-invert); --sl-rapide-asides-table-alt-color: var(--sl-color-purple-alt); --sl-rapide-asides-table-border-color: var(--sl-color-purple-alt-invert); } &.starlight-aside--caution { --sl-rapide-asides-bg-color: var(--sl-color-orange-low); --sl-rapide-asides-link-color: var(--sl-color-orange-accent); --sl-rapide-asides-link-hover-color: var(--sl-color-orange-accent-invert); --sl-rapide-asides-table-alt-color: var(--sl-color-orange-alt); --sl-rapide-asides-table-border-color: var(--sl-color-orange-alt-invert); } &.starlight-aside--danger { --sl-rapide-asides-bg-color: var(--sl-color-red-low); --sl-rapide-asides-link-color: var(--sl-color-red-accent); --sl-rapide-asides-link-hover-color: var(--sl-color-red-accent-invert); --sl-rapide-asides-table-alt-color: var(--sl-color-red-alt); --sl-rapide-asides-table-border-color: var(--sl-color-red-alt-invert); } border: 1px solid var(--sl-color-asides-border); border-radius: 0.5rem; color: var(--sl-color-asides-text-accent); a { color: var(--sl-rapide-asides-link-color); } a:is(:hover, :focus-visible) { color: var(--sl-rapide-asides-link-hover-color); } tr:nth-child(2n) { background-color: var(--sl-rapide-asides-table-alt-color); } td { border-color: var(--sl-rapide-asides-table-border-color); } } /** * File tree */ starlight-file-tree { background-color: var(--sl-rapide-ui-bg-color); border: 1px solid var(--sl-rapide-ui-border-color); border-radius: 0.5rem; .directory > details > summary:hover ~ ul { border-color: var(--sl-color-accent-high); } } /** * Notices */ .content-panel:first-of-type p:not(:where(.sl-markdown-content *)) { border-radius: 0.5rem; padding: 1rem; svg { flex-shrink: 0; } } /** * Steps */ .sl-steps > li:last-of-type::after { --guide-width: 1px; background: linear-gradient(to bottom, var(--sl-color-hairline-light), var(--sl-color-bg) 85%); bottom: var(--bullet-margin); content: ''; inset-inline-start: calc((var(--bullet-size) - var(--guide-width)) / 2); position: absolute; top: calc(var(--bullet-size) + var(--bullet-margin)); width: var(--guide-width); } /** * Badges */ .sl-badge { --sl-badge-default-text: var(--sl-color-green-high); --sl-badge-tip-text: var(--sl-color-purple-high); --sl-badge-caution-text: var(--sl-color-orange-high); --sl-badge-note-text: var(--sl-color-blue-high); --sl-badge-success-text: var(--sl-color-green-high); --sl-badge-danger-text: var(--sl-color-red-high); [data-theme='light'] & { --sl-badge-default-bg: var(--sl-color-green-low); --sl-badge-default-text: var(--sl-color-green-high); --sl-badge-tip-bg: var(--sl-color-purple-low); --sl-badge-tip-text: var(--sl-color-purple-high); --sl-badge-caution-bg: var(--sl-color-orange-low); --sl-badge-caution-text: var(--sl-color-orange-high); --sl-badge-note-bg: var(--sl-color-blue-low); --sl-badge-note-text: var(--sl-color-blue-high); --sl-badge-success-bg: var(--sl-color-green-low); --sl-badge-success-text: var(--sl-color-green-high); --sl-badge-danger-bg: var(--sl-color-red-low); --sl-badge-danger-text: var(--sl-color-red-high); } } /** * Link buttons */ .sl-link-button { padding: 0.75rem 1rem; svg { font-size: 1.25rem; } &.primary { background-color: var(--sl-color-green-low); border: 1px solid var(--sl-color-green); color: var(--sl-color-green-high); &:is(:hover, :focus-visible) { border-color: oklch(52% 0.11 var(--sl-hue-green)); color: var(--sl-color-green-accent-invert); } } &.secondary { border-color: var(--sl-color-gray-2); color: var(--sl-color-gray-2); &:is(:hover, :focus-visible) { border-color: var(--sl-color-accent-high); color: var(--sl-color-accent-high); } } &.minimal { padding-inline: 0.25rem; &:is(:hover, :focus-visible) { color: var(--sl-color-accent-high); } } } /** * Banner */ .sl-banner { background-color: var(--sl-color-green-low); border: 1px solid var(--sl-color-green); border-radius: 0.5rem; box-shadow: none; color: var(--sl-color-green-high); line-height: 1.4; margin-block: 2rem -0.5rem; margin-inline: var(--sl-content-pad-x); max-width: var(--sl-content-width); padding: 1rem; text-align: start; text-wrap: initial; a { color: var(--sl-color-green-accent); text-underline-offset: 0.25em; &:is(:hover, :focus-visible) { color: var(--sl-color-green-accent-invert); } } @media (min-width: 72rem) { margin-bottom: -1rem; margin-inline: auto; [data-has-sidebar] & { justify-self: end; margin-inline: var(--sl-content-pad-x); } } } [data-has-sidebar] main:has(.sl-banner) { display: grid; } }