mirror of
https://github.com/supabase/supabase.git
synced 2026-08-08 23:50:07 -04:00
Adjusts light theme for better contrast on foreground, muted-foreground and tertiary-foreground text <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Style** * Retuned the light theme’s surface chroma and updated light, muted, and tertiary foreground levels for improved readability. * Updated the brand link color saturation to better align with the revised theme. * Refreshed code block token colors for both light and dark themes. * **Documentation** * Updated the “Edit this page on GitHub” link styling to use updated token-based text colors for default and hover states. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
463 lines
9.8 KiB
CSS
463 lines
9.8 KiB
CSS
@import 'config/tailwind.config.css';
|
|
@import './../../../packages/ui/build/css/themes/faux-classic-dark.css';
|
|
|
|
@source '../app/**/*.{ts,tsx,mdx}';
|
|
@source '../components/**/*.tsx';
|
|
@source '../content/**/*.{ts,tsx,mdx}';
|
|
@source '../docs/**/*.{tsx,mdx}';
|
|
@source '../features/**/*.{ts,tsx,mdx}';
|
|
@source '../layouts/**/*.tsx';
|
|
@source '../pages/**/*.{tsx,mdx}';
|
|
@source './../../../packages/ui/src/**/*.{tsx,ts,js}';
|
|
@source './../../../packages/ui-patterns/src/**/*.{tsx,ts,js}';
|
|
|
|
@theme inline {
|
|
--font-sans:
|
|
var(--font-inter), Inter, Helvetica Neue, Helvetica, ui-sans-serif, system-ui, sans-serif;
|
|
--font-heading: var(--font-manrope, var(--font-sans));
|
|
--font-mono: 'Source Code Pro', ui-monospace, Menlo, monospace;
|
|
}
|
|
|
|
@theme {
|
|
--text-sm: 0.8125rem;
|
|
--text-base: 0.9375rem;
|
|
--text-lg: 1rem;
|
|
--text-xl: 1.125rem;
|
|
--text-2xl: 1.375rem;
|
|
--text-3xl: 1.75rem;
|
|
--text-4xl: 2.125rem;
|
|
--text-5xl: 2.875rem;
|
|
--text-6xl: 3.625rem;
|
|
--text-7xl: 4.375rem;
|
|
--text-8xl: 5.875rem;
|
|
--text-9xl: 7.875rem;
|
|
--font-weight-normal: 450;
|
|
}
|
|
|
|
@layer utilities {
|
|
.prose--remove-p-margin p {
|
|
margin: 0;
|
|
}
|
|
}
|
|
|
|
@layer base {
|
|
*,
|
|
::after,
|
|
::before,
|
|
::backdrop,
|
|
::file-selector-button {
|
|
border-color: var(--border-default, currentColor);
|
|
}
|
|
|
|
code,
|
|
.code-content,
|
|
pre,
|
|
kbd,
|
|
samp,
|
|
.font-mono {
|
|
--text-xs: 0.75rem;
|
|
--text-sm: 0.875rem;
|
|
--text-base: 1rem;
|
|
--text-lg: 1.125rem;
|
|
--text-xl: 1.25rem;
|
|
--text-2xl: 1.5rem;
|
|
--text-3xl: 1.875rem;
|
|
--text-4xl: 2.25rem;
|
|
--text-5xl: 3rem;
|
|
--text-6xl: 3.75rem;
|
|
--text-7xl: 4.5rem;
|
|
--text-8xl: 6rem;
|
|
--text-9xl: 8rem;
|
|
--font-weight-normal: 400;
|
|
}
|
|
}
|
|
|
|
:root {
|
|
--sidebar-width: 300px;
|
|
--header-height: 50px;
|
|
}
|
|
|
|
html {
|
|
scroll-behavior: smooth;
|
|
font-weight: 500;
|
|
}
|
|
|
|
html[data-theme*='dark'] {
|
|
font-weight: 450;
|
|
}
|
|
|
|
body {
|
|
@apply bg-background text-foreground;
|
|
-webkit-font-smoothing: antialiased;
|
|
-moz-osx-font-smoothing: grayscale;
|
|
}
|
|
|
|
::selection {
|
|
background-color: #6ee7b7 !important;
|
|
color: #333 !important;
|
|
}
|
|
|
|
h1:not(.font-mono),
|
|
h2:not(.font-mono),
|
|
h3:not(.font-mono),
|
|
h4:not(.font-mono),
|
|
h5:not(.font-mono),
|
|
h6:not(.font-mono),
|
|
.h1:not(.font-mono),
|
|
.h2:not(.font-mono),
|
|
.h3:not(.font-mono),
|
|
.h4:not(.font-mono),
|
|
.h5:not(.font-mono),
|
|
.h6:not(.font-mono) {
|
|
@apply font-heading font-semibold;
|
|
}
|
|
|
|
.thin-scrollbar {
|
|
scrollbar-width: thin;
|
|
}
|
|
|
|
.sidebar-width {
|
|
width: var(--sidebar-width);
|
|
}
|
|
|
|
.docs-width {
|
|
max-width: calc(100% - var(--sidebar-width));
|
|
|
|
@media screen and (max-width: 1024px) {
|
|
max-width: none;
|
|
}
|
|
}
|
|
|
|
.width-full {
|
|
width: 100% !important;
|
|
}
|
|
|
|
.p:not(.prose *):not(.overwrite) {
|
|
@apply text-foreground-light;
|
|
margin-bottom: 16px;
|
|
}
|
|
|
|
.small:not(.prose *):not(.overwrite) {
|
|
@apply text-foreground-muted text-xs;
|
|
}
|
|
|
|
.prose :where(p):not(:where([class~='not-prose'], [class~='not-prose'] *)) {
|
|
white-space: pre-line;
|
|
}
|
|
|
|
.prose :where(p, a, code, pre):not(:where([class~='not-prose'], [class~='not-prose'] *)),
|
|
.prose :where(ol > li):not(:where([class~='not-prose'], [class~='not-prose'] *))::marker {
|
|
font-weight: inherit;
|
|
}
|
|
|
|
/* Body text inherits a heavier base weight, so override the shared `strong: 500`
|
|
* to keep bold text visually distinct. */
|
|
.prose :where(strong, b):not(:where([class~='not-prose'], [class~='not-prose'] *)) {
|
|
font-weight: 700;
|
|
}
|
|
|
|
.prose :where(h1, h2, h3, h4, h5, h6):not(:where([class~='not-prose'], [class~='not-prose'] *)) {
|
|
@apply font-heading font-semibold;
|
|
}
|
|
|
|
.prose
|
|
:where(p, li, a, figcaption):not(:where([class~='not-prose'], [class~='not-prose'] *)):not(
|
|
:where(h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6) *
|
|
) {
|
|
@apply text-base leading-7;
|
|
}
|
|
|
|
.prose :where(h1, .h1):not(:where([class~='not-prose'], [class~='not-prose'] *)) {
|
|
@apply text-4xl;
|
|
}
|
|
.prose :where(h2, .h2):not(:where([class~='not-prose'], [class~='not-prose'] *)) {
|
|
@apply text-2xl;
|
|
}
|
|
.prose :where(h3, .h3):not(:where([class~='not-prose'], [class~='not-prose'] *)) {
|
|
@apply text-xl leading-7;
|
|
}
|
|
|
|
code[class*='language-'],
|
|
pre[class*='language-'] {
|
|
text-shadow: none !important;
|
|
}
|
|
|
|
/* Spec doc specifics ported from docusaurus */
|
|
/* @TODO these should be converted to Tailwind classes */
|
|
|
|
.method-list-item {
|
|
@apply border-t border-gray-400;
|
|
.method-list-item-label {
|
|
@apply flex items-center gap-1;
|
|
}
|
|
.method-list-item-label-name {
|
|
@apply font-mono font-bold text-sm py-2;
|
|
}
|
|
.method-list-item-label-badge {
|
|
@apply font-mono text-xs px-1;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.method-list-item-validation {
|
|
@apply flex flex-wrap gap-2 items-center;
|
|
}
|
|
.method-list-item-description {
|
|
@apply text-sm space-y-2;
|
|
}
|
|
}
|
|
|
|
.method-list-title-isChild {
|
|
font-family: var(--font-mono);
|
|
& h5 {
|
|
font-weight: 200;
|
|
}
|
|
}
|
|
|
|
.method-list-item-validation {
|
|
code {
|
|
@apply text-xs bg-control rounded-sm;
|
|
padding: 1px 6px;
|
|
}
|
|
}
|
|
|
|
.method-list-group {
|
|
@apply p-0 m-0 list-none border-b;
|
|
}
|
|
|
|
.method-list-group .method-list-group {
|
|
@apply border border-overlay rounded-md;
|
|
margin-bottom: 20px;
|
|
max-width: 600px;
|
|
}
|
|
|
|
.method-list-group .method-list-group li {
|
|
margin-top: 0;
|
|
padding: 12px;
|
|
border-bottom: none;
|
|
}
|
|
.method-list-title {
|
|
margin: 0;
|
|
padding: 6px 12px;
|
|
}
|
|
.method-list-group .method-list-group li div,
|
|
.method-list-group .method-list-group li h4,
|
|
.method-list-group .method-list-group li p {
|
|
padding: 0;
|
|
margin: 0;
|
|
}
|
|
.method-list-group .method-list-group li h4 {
|
|
margin-bottom: 4px;
|
|
}
|
|
|
|
/* These should move to their own components */
|
|
/* wasn't able to get an import path working */
|
|
.parent-menu-toggle.active {
|
|
svg {
|
|
transform: rotate(90deg);
|
|
}
|
|
}
|
|
|
|
/* ToC styles */
|
|
/* .toc__menu-item--active { */
|
|
/* color: hsl(var(--brand-default)) !important; */
|
|
/* } */
|
|
|
|
.video-container {
|
|
position: relative;
|
|
width: 100%;
|
|
padding-bottom: 56.25%;
|
|
|
|
iframe {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
border: 0;
|
|
}
|
|
}
|
|
|
|
.admonition-content > p {
|
|
@apply m-0;
|
|
}
|
|
|
|
/* format <code> inside <p> */
|
|
h2 code,
|
|
h3 code,
|
|
h4 code {
|
|
word-break: keep-all !important;
|
|
white-space: nowrap !important;
|
|
padding: 0.1rem 0.35rem !important;
|
|
|
|
&:before {
|
|
display: none;
|
|
}
|
|
&::after {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
/* code inside admonitions */
|
|
.admonition-content p code {
|
|
@apply bg-control;
|
|
word-break: keep-all !important;
|
|
white-space: nowrap !important;
|
|
}
|
|
|
|
article p strong {
|
|
color: inherit !important;
|
|
}
|
|
|
|
/* fix box shadow when <code> is inside <a> */
|
|
a:has(code) {
|
|
box-shadow: none !important;
|
|
}
|
|
|
|
/* fix code line wrapping */
|
|
/* need to set this to happen from medium onwards, otherwise the would cause horizontal scroll */
|
|
article p code {
|
|
&::before,
|
|
&::after {
|
|
display: none !important;
|
|
}
|
|
}
|
|
|
|
.short-inline-codeblock {
|
|
word-wrap: break-word;
|
|
@media screen and (min-width: 769px) {
|
|
white-space: pre !important;
|
|
}
|
|
}
|
|
|
|
/* fix firefox issue with li wrapping */
|
|
.doc-content-container ul li div.relative {
|
|
display: inline-block;
|
|
}
|
|
|
|
/* fix ToC links when they have <code> inside */
|
|
.toc-menu li a code {
|
|
background: none;
|
|
border: none;
|
|
}
|
|
|
|
/*
|
|
* sets the image in @Next/Image components to respect the height of the content
|
|
*/
|
|
.next-image--dynamic-fill {
|
|
width: 100%;
|
|
grid-column: 1 / -1;
|
|
}
|
|
.next-image--dynamic-fill > span {
|
|
position: relative !important;
|
|
}
|
|
.next-image--dynamic-fill img {
|
|
object-fit: contain;
|
|
width: 100% !important;
|
|
position: relative !important;
|
|
height: unset !important;
|
|
}
|
|
|
|
#docs-content-container #introduction {
|
|
@apply scroll-mt-60;
|
|
}
|
|
|
|
/* dat.GUI */
|
|
|
|
.dg.ac {
|
|
z-index: 9999 !important;
|
|
}
|
|
|
|
/* tables */
|
|
|
|
th code {
|
|
@apply text-nowrap;
|
|
}
|
|
|
|
/*
|
|
* First column (e.g. variable names): wrap at word boundaries, not mid-token.
|
|
*/
|
|
.prose :where(td:first-child) code {
|
|
@apply break-words whitespace-normal;
|
|
}
|
|
|
|
/*
|
|
* Other columns: prevents very long code lines (checksums, URLs, etc.) from
|
|
* breaking table widths.
|
|
*/
|
|
.prose :where(td:not(:first-child)) code {
|
|
@apply break-all;
|
|
}
|
|
|
|
.prose table td:first-child,
|
|
.prose table th:first-child {
|
|
min-width: 12rem;
|
|
width: 30%;
|
|
}
|
|
|
|
/* Zoomable image */
|
|
|
|
[data-rmiz-modal]:focus,
|
|
[data-rmiz-modal-overlay]:focus {
|
|
outline: none !important;
|
|
}
|
|
|
|
[data-rmiz-modal-overlay],
|
|
[data-rmiz-modal-img] {
|
|
transition-timing-function: cubic-bezier(0.24, 0.25, 0.05, 1) !important;
|
|
}
|
|
[data-rmiz-modal-overlay='visible'] {
|
|
background-color: var(--background-default) !important;
|
|
opacity: 0.8;
|
|
}
|
|
[data-rmiz-modal-img] {
|
|
image-rendering: high-quality;
|
|
}
|
|
|
|
/* Code blocks need margin applied when in content container */
|
|
.prose :where(.shiki:not(.shiki-wrapper *), .shiki-wrapper) {
|
|
margin-block: 2rem;
|
|
}
|
|
|
|
/* Code block theme colors for use with Supabase Theme */
|
|
[data-theme='dark'],
|
|
.dark {
|
|
--code-token-keyword: #bda4ff;
|
|
--code-foreground: #ffffff;
|
|
--code-token-constant: #3ecf8e;
|
|
--code-token-string: #ffcda1;
|
|
--code-token-comment: #949494;
|
|
--code-token-parameter: #ffffff;
|
|
--code-token-function: #3ecf8e;
|
|
--code-token-string-expression: #ffcda1;
|
|
--code-token-punctuation: #ffffff;
|
|
--code-token-link: #ffffff;
|
|
--code-token-number: #ffffff;
|
|
--code-token-property: #3ecf8e;
|
|
--code-highlight-color: #232323;
|
|
}
|
|
[data-theme='light'],
|
|
.light {
|
|
--code-token-keyword: #5f2fc4;
|
|
--code-foreground: oklch(from var(--foreground-light) l c h / 1);
|
|
--code-token-constant: #15593b;
|
|
--code-token-string: #9a5200;
|
|
--code-token-comment: #6a6a6a;
|
|
--code-token-parameter: oklch(from var(--foreground-light) l c h / 1);
|
|
--code-token-function: #15593b;
|
|
--code-token-string-expression: #9a5200;
|
|
--code-token-punctuation: oklch(from var(--foreground-light) l c h / 1);
|
|
--code-token-link: oklch(from var(--foreground-light) l c h / 1);
|
|
--code-token-number: oklch(from var(--foreground-light) l c h / 1);
|
|
--code-token-property: #15593b;
|
|
--code-highlight-color: #1c1c1c;
|
|
}
|
|
|
|
/* Word wrap styles for code blocks */
|
|
.shiki[data-wrapped='true'] {
|
|
overflow-x: hidden !important;
|
|
}
|
|
|
|
.shiki[data-wrapped='true'] .code-content {
|
|
white-space: pre-wrap !important;
|
|
word-break: break-word !important;
|
|
}
|