diff --git a/apps/reference/docs/reference.mdx b/apps/reference/docs/reference.mdx index 9c49afdc58..5b6fb67102 100644 --- a/apps/reference/docs/reference.mdx +++ b/apps/reference/docs/reference.mdx @@ -6,6 +6,7 @@ hide_table_of_contents: true --- import Link from '@docusaurus/Link' +import ButtonCard from '@site/src/components/ButtonCard' The Supabase Reference Docs provide technical descriptions of the products and how to use them. @@ -13,45 +14,37 @@ The Supabase Reference Docs provide technical descriptions of the products and h
{/* Database */}
- -
-

JavaScript

-

JavaScript and TypeScript documentation.

-
- + title="JavaScript" + description="JavaScript and TypeScript documentation." + > + +
{/* Auth */}
- -
-

Dart

-

Dart and Flutter documentation.

-
- + + +
{/* Examples - coming soon */}
- -
-

Supabase CLI

-

Manage your Supabase projects.

-
- + + +
{/* CLI */}
- -
-

Supabase API

-

Manage your Supabase projects.

-
- + + +
{/* */} +
diff --git a/apps/reference/src/components/ButtonCard.js b/apps/reference/src/components/ButtonCard.js new file mode 100644 index 0000000000..0790a4afe6 --- /dev/null +++ b/apps/reference/src/components/ButtonCard.js @@ -0,0 +1,21 @@ +import React from 'react' +import Link from '@docusaurus/Link' + +export default function ButtonCard({ + children, + color, + icon, + title, + description, + to, +}) { + return ( + +
+ +

{title}

+

{description}

+
+ + ) +} diff --git a/apps/reference/src/css/components/_button-card.scss b/apps/reference/src/css/components/_button-card.scss new file mode 100644 index 0000000000..3fea97adb1 --- /dev/null +++ b/apps/reference/src/css/components/_button-card.scss @@ -0,0 +1,31 @@ +:root { + --custom-button-card-padding: 2rem; +} + +.button-card__container { + padding: var(--custom-button-card-padding); + border: 1px solid var(--custom-border-color); + background-color: var(--custom-background-color-diff); + border-radius: 0.5rem; + + margin-bottom: var(--ifm-spacing-horizontal) !important; + + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), + var(--tw-shadow, 0 0 #0000); + + img { + margin-bottom: 0.5rem; + } + + h3 { + color: var(--custom-content-color-emphasis); + font-size: var(--custom-font-size-lg); + margin-bottom: 0rem; + } + + p { + color: var(--custom-content-color-light); + font-size: var(--custom-font-size-sm); + margin-bottom: 0; + } +} diff --git a/apps/reference/src/css/components/_doc-item.scss b/apps/reference/src/css/components/_doc-item.scss index e819361d12..7eaf122950 100644 --- a/apps/reference/src/css/components/_doc-item.scss +++ b/apps/reference/src/css/components/_doc-item.scss @@ -1,19 +1,11 @@ :root { - --doc-item-container-width: 42rem; + // --doc-item-container-width: 42rem; } //overrides #__docusaurus { - //#region ------------ DocItem ------------- [class*='docItemCol_'] { - // max-width: initial; - // min-width: 0; - // width: 100%; - flex-direction: column; - - @media (min-width: 997px) { - // max-width: initial !important; - } + // flex-direction: column; } [class*='docItemContainer_'] { @@ -23,17 +15,14 @@ [class*='docItemContainer_'] { max-width: var(--doc-item-container-width); margin: 0 auto; - width: 100%; - // flex-grow: 1; - // min-width: 0; + // width: 100%; } .theme-doc-version-banner { max-width: var(--doc-item-container-width); margin: 0 auto; - width: 100%; - // flex-grow: 1; - // min-width: 0; + // width: 100%; + margin-bottom: 2rem !important; } [class*='docMainContainer_'] { @@ -43,29 +32,29 @@ // } // } - > .container { - > .row { - > .col { - display: flex; - justify-content: center; + // > .container { + // > .row { + // > .col { + // display: flex; + // justify-content: center; - min-width: 0; - } - } - } + // min-width: 0; + // } + // } + // } - .spacer { - flex-basis: 5rem; + // .spacer { + // flex-basis: 5rem; - @media (max-width: 996px) { - display: none; - } - } + // @media (max-width: 996px) { + // display: none; + // } + // } } - [class*='docItemCol_'] { - margin-inline-start: auto; - margin-inline-end: auto; - } + // [class*='docItemCol_'] { + // margin-inline-start: auto; + // margin-inline-end: auto; + // } //#endregion } diff --git a/apps/reference/src/css/components/_doc-page.scss b/apps/reference/src/css/components/_doc-page.scss index ebf26ca502..575491c68a 100644 --- a/apps/reference/src/css/components/_doc-page.scss +++ b/apps/reference/src/css/components/_doc-page.scss @@ -1,7 +1,7 @@ //overrides #__docusaurus { [class*='docMainContainer_'] { - max-width: initial; + // max-width: initial; padding-top: var(--doc-page-vertical-spacing); > .container { diff --git a/apps/reference/src/css/components/_doc-sidebar.scss b/apps/reference/src/css/components/_doc-sidebar.scss index 53d064757a..dd8511a79b 100644 --- a/apps/reference/src/css/components/_doc-sidebar.scss +++ b/apps/reference/src/css/components/_doc-sidebar.scss @@ -1,138 +1,199 @@ -html[data-theme='light'] { - --sidebar-category-c: var(--c-gray-100); - --sidebar-border-c: var(--c-gray-0); - - --ifm-menu-color-background-active: var(--c-blue-0); - --ifm-menu-color: var(--c-indigo-80); -} - -html[data-theme='dark'] { - --sidebar-category-c: var(--c-gray-0); - --sidebar-border-c: var(--c-gray-90); - - --ifm-menu-color: var(--c-gray-20); -} - :root { - // --doc-sidebar-width: 32rem; - // --dropdown-icon-width: 0.625rem; - // --dropdown-icon-height: 0.375rem; - // --dropdown-icon-gap: 0.688rem; - // --ifm-menu-link-padding-vertical: 0.5rem; - // --ifm-menu-color-active: var(--ifm-link-color); - // --sidebar-spacing-horizontal: 1.5rem; + --doc-sidebar-width: 20rem; + + --ifm-sidebar-border-color: var(--custom-border-color); + --ifm-menu-link-padding-horizontal: 0rem; + + --ifm-menu-color: var(--custom-content-color-light); + --ifm-menu-color-active: var(--custom-primary); + --ifm-menu-color-background-active: var(--custom-background-color-diff); + + --dropdown-icon-width: 0.525rem; + --dropdown-icon-height: 0.475rem; + --dropdown-icon-gap: 0.688rem; + --ifm-menu-link-padding-vertical: 0.5rem; + + --custom-sidebar-padding: 1.5rem; + --custom-sidebar-menu-link-vertical-padding: 1rem; + --custom-sidebar-menu-link-padding: 0.5rem 1rem; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; - --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 1px 2px 0 rgb(0 0 0/0.05); - --tw-ring-color: rgb(15 23 42/0.05); } -.theme-doc-sidebar-menu-custom-container { - // padding: 32px; - padding: var(--custom-sidebar-padding); - overflow-x: hidden; +:root[data-theme='dark'] { + --ifm-menu-color-background-active: var(--custom-background-color-highlight); +} - .custom--main-menu-button { - display: flex; - padding: 1rem 0 0.5rem 1rem; - font-size: 0.9rem; - color: var(--custom-content-color-light); - } - - .custom--main-menu-header-container { - display: flex; - align-items: center; - gap: 0.75rem; - padding: 1rem 0 0.5rem 1rem; +.menu { + padding-top: var(--custom-sidebar-menu-link-vertical-padding) !important; + padding-bottom: var(--custom-sidebar-menu-link-vertical-padding) !important; + padding-left: var(--custom-sidebar-padding) !important; + padding-right: var(--custom-sidebar-padding) !important; + ul { margin-bottom: 1rem; + } +} - .custom--main-menu-header { - display: flex; - font-size: var(--custom-font-size-md); - font-weight: 700; - color: var(--ifm-menu-color); - margin-bottom: 0; - } +.menu__list { + // transition-duration: 0.1s !important; + transition: height 0.35s cubic-bezier(0.36, 0.66, 0.04, 1) 25ms !important; + transition-property: height !important; + transition-duration: 0.35s !important; + transition-timing-function: cubic-bezier(0.36, 0.66, 0.04, 1) !important; + transition-delay: 25ms !important; +} - .custom--main-menu-header__icon { - width: 40px; - height: 40px; - display: flex; - align-items: center; - justify-content: center; - border-radius: 4px; - background-color: white; - // border: 1px solid var(--custom-background-color-diff-1); - - box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), - var(--tw-shadow, 0 0 #0000); - - --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 - var(--tw-ring-offset-width) var(--tw-ring-offset-color); - --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 - calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); - - img { - width: 1.5rem; - height: 1.5rem; - border-radius: 4px; - } - } +// sub menu items +.menu__list-item-collapsible { + &:hover { + background-color: transparent; } - .custom--main-menu-button svg { - padding: 2px; - margin-right: 10px; - color: var(--custom-content-color-light); - } - .custom--main-menu-button:hover, - .custom--main-menu-button:hover svg { - transition: all; - transition-duration: 0.5s; + padding-left: var(--custom-sidebar-menu-padding); + + a { color: var(--custom-content-color-emphasis); } - .menu__link--sublist-caret { &::after { - background: var(--ifm-menu-link-sublist-icon) center / - var(--dropdown-icon-width) var(--dropdown-icon-height); - background-repeat: no-repeat; - - min-width: auto; - - width: var(--dropdown-icon-width); - height: var(--dropdown-icon-height); - - // margin-inline-end: var(--dropdown-icon-gap); - // margin-block-end: 0; + position: absolute; + left: 0; } } +} - .menu__caret { - &::before { - background: var(--ifm-menu-link-sublist-icon) center / - var(--dropdown-icon-width) var(--dropdown-icon-height); - background-repeat: no-repeat; +.menu__list-item { + margin-top: 0 !important; + background-color: 'pink' !important; + font-size: var(--custom-font-size-xs); - min-width: auto; + a { + padding: var(--custom-sidebar-menu-link-padding); + } - width: var(--dropdown-icon-width); - height: var(--dropdown-icon-height); + a:not(.menu__link--active):hover { + background-color: transparent; + color: var(--custom-content-color-emphasis); + } +} - // margin-right: var(--dropdown-icon-width); +.menu__link--sublist { + font-size: var(--custom-font-size-sm); +} - // margin-inline-end: var(--dropdown-icon-gap); - // margin-block-end: 0; +.theme-doc-sidebar-menu-custom-container { + padding-top: var(--custom-sidebar-menu-link-vertical-padding) !important; + padding-bottom: var(--custom-sidebar-menu-link-vertical-padding) !important; + overflow-x: hidden; + display: flex; + flex-direction: column; + gap: 1rem; +} + +.custom--main-menu-button { + padding-left: var(--custom-sidebar-padding); + padding-right: var(--custom-sidebar-padding); + + display: flex; + // padding: 1rem 0 0.5rem 1rem; + font-size: 0.9rem; + color: var(--custom-content-color-light); +} + +.custom--main-menu-header-container { + padding-left: var(--custom-sidebar-padding); + padding-right: var(--custom-sidebar-padding); + + display: flex; + align-items: center; + gap: var(--custom-sidebar-menu-link-vertical-padding); + + .custom--main-menu-header { + display: flex; + font-size: var(--custom-font-size-md); + font-weight: 700; + color: var(--custom-content-color-emphasis); + margin-bottom: 0; + } + + .custom--main-menu-header__icon { + width: 40px; + height: 40px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 4px; + background-color: white; + // border: 1px solid var(--custom-background-color-diff-1); + + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), + var(--tw-shadow, 0 0 #0000); + + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 + var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 + calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); + + img { + width: 1.5rem; + height: 1.5rem; + border-radius: 4px; } } } +.custom--main-menu-button svg { + padding: 2px; + margin-right: 10px; + color: var(--custom-content-color-light); +} +.custom--main-menu-button:hover, +.custom--main-menu-button:hover svg { + transition: all; + transition-duration: 0.5s; + color: var(--custom-content-color-emphasis); +} + +.menu__link--sublist-caret { + &::after { + background: var(--ifm-menu-link-sublist-icon) center / + var(--dropdown-icon-width) var(--dropdown-icon-height); + background-repeat: no-repeat; + + min-width: auto; + + width: var(--dropdown-icon-width); + height: var(--dropdown-icon-height); + + // margin-inline-end: var(--dropdown-icon-gap); + // margin-block-end: 0; + } +} + +.menu__caret { + &::before { + background: var(--ifm-menu-link-sublist-icon) center / + var(--dropdown-icon-width) var(--dropdown-icon-height); + background-repeat: no-repeat; + + min-width: auto; + + width: var(--dropdown-icon-width); + height: var(--dropdown-icon-height); + + // margin-right: var(--dropdown-icon-width); + + // margin-inline-end: var(--dropdown-icon-gap); + // margin-block-end: 0; + } +} + html[data-theme='dark'] { .custom--main-menu-header-container { .custom--main-menu-header__icon { diff --git a/apps/reference/src/css/components/_markdown.scss b/apps/reference/src/css/components/_markdown.scss index be8d34f33d..461ef726cb 100644 --- a/apps/reference/src/css/components/_markdown.scss +++ b/apps/reference/src/css/components/_markdown.scss @@ -79,7 +79,7 @@ html[data-theme='dark'] { } h1 { - margin-block-start: 5rem; + // margin-block-start: 5rem; } h2 + h3, diff --git a/apps/reference/src/css/components/_menu.scss b/apps/reference/src/css/components/_menu.scss new file mode 100644 index 0000000000..6d9235d621 --- /dev/null +++ b/apps/reference/src/css/components/_menu.scss @@ -0,0 +1,28 @@ +// .menu { +// font-weight: var(--ifm-font-weight-regular); +// } + +// .menu__link { +// font-size: var(--custom-font-size-sm); +// color: var(--custom-content-color-light); +// padding-left: 10px; +// padding-right: 10px; +// } + +// .menu__link.menu__link--sublist { +// font-weight: var(--ifm-font-weight-bold); +// // text-transform: uppercase; +// // font-size: smaller; +// color: var(--custom-content-color-emphasis); +// } + +// .menu__link.menu__link--active:not(.menu__link--sublist) { +// /* background-color: transparent; */ +// color: var(--custom-content-color-emphasis); +// } + +// .menu__link:hover:not(.menu__link--active), +// .menu__caret:hover { +// background-color: transparent; +// color: var(--custom-content-color-emphasis); +// } diff --git a/apps/reference/src/css/custom.scss b/apps/reference/src/css/custom.scss index 1458fa1c9b..0758f85f77 100644 --- a/apps/reference/src/css/custom.scss +++ b/apps/reference/src/css/custom.scss @@ -7,8 +7,11 @@ /* You can override the default Infima variables here. */ +@use './fonts'; @use './main'; @use './components/methodLists'; +@use './components/menu'; +@use './components/button-card'; // @use './components/admonition'; // @use './components/back-to-top-button'; // @use './components/code'; @@ -16,7 +19,7 @@ @use './components/doc-page'; @use './components/doc-sidebar'; // @use './components/edit-this-page'; -// @use './components/markdown'; +@use './components/markdown'; // @use './components/navbar'; // @use './components/navbar-sidebar'; // @use './components/pagination'; @@ -85,14 +88,13 @@ // --ifm-menu-link-sublist-icon-filter: invert(100%); // } -// html { -// -moz-osx-font-smoothing: grayscale; -// -webkit-font-smoothing: antialiased; -// text-rendering: optimizeLegibility; -// font-smoothing: antialiased; - -// scroll-padding-top: calc(var(--ifm-navbar-height) + 16px); -// } +html { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; + font-smoothing: antialiased; + scroll-padding-top: calc(var(--ifm-navbar-height) + 16px); +} // *, // *::before, diff --git a/apps/reference/src/css/fonts.scss b/apps/reference/src/css/fonts.scss new file mode 100644 index 0000000000..e3ca66e29b --- /dev/null +++ b/apps/reference/src/css/fonts.scss @@ -0,0 +1,29 @@ +@font-face { + font-family: 'custom-font'; + src: url(/fonts/custom/CustomFont-Book.woff2) format('woff2'), + url(/fonts/custom/CustomFont-Book.woff) format('woff'); + font-weight: 400; + font-style: normal; +} + +@font-face { + font-family: 'custom-font'; + src: url(/fonts/custom/CustomFont-Medium.woff2) format('woff2'), + url(/fonts/custom/CustomFont-Medium.woff) format('woff'); + font-weight: 500; + font-style: normal; +} + +/* mono font */ + +@font-face { + font-family: 'office code pro'; + src: url('/fonts/office-code-pro/OfficeCodePro-Regular.eot'); + src: url('/fonts/office-code-pro/OfficeCodePro-Regular.woff2') format('woff2'), + url('/fonts/office-code-pro/OfficeCodePro-Regular.woff') format('woff'), + url('/fonts/office-code-pro/OfficeCodePro-Regular.ttf') format('truetype'), + url('/fonts/office-code-pro/OfficeCodePro-Regular.otf') format('otf'); + font-weight: normal; + font-style: normal; + font-display: swap; +} diff --git a/apps/reference/src/css/main.scss b/apps/reference/src/css/main.scss index 4311942ac3..fd056e50db 100644 --- a/apps/reference/src/css/main.scss +++ b/apps/reference/src/css/main.scss @@ -1,37 +1,3 @@ -/* - Font import -*/ - -@font-face { - font-family: 'custom-font'; - src: url(/fonts/custom/CustomFont-Book.woff2) format('woff2'), - url(/fonts/custom/CustomFont-Book.woff) format('woff'); - font-weight: 400; - font-style: normal; -} - -@font-face { - font-family: 'custom-font'; - src: url(/fonts/custom/CustomFont-Medium.woff2) format('woff2'), - url(/fonts/custom/CustomFont-Medium.woff) format('woff'); - font-weight: 500; - font-style: normal; -} - -/* mono font */ - -@font-face { - font-family: 'office code pro'; - src: url('/fonts/office-code-pro/OfficeCodePro-Regular.eot'); - src: url('/fonts/office-code-pro/OfficeCodePro-Regular.woff2') format('woff2'), - url('/fonts/office-code-pro/OfficeCodePro-Regular.woff') format('woff'), - url('/fonts/office-code-pro/OfficeCodePro-Regular.ttf') format('truetype'), - url('/fonts/office-code-pro/OfficeCodePro-Regular.otf') format('otf'); - font-weight: normal; - font-style: normal; - font-display: swap; -} - /** * Any CSS included here will be global. The classic template * bundles Infima by default. Infima is a CSS framework designed to @@ -53,6 +19,7 @@ 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif; --custom-font-code: 'office code pro', Menlo, monospace; + --custom-font-size-lg: 1.1rem; --custom-font-size-base: 1rem; --custom-font-size-sm: 0.9rem; --custom-font-size-xs: 0.8rem; @@ -161,22 +128,13 @@ --ifm-hero-text-color: var(--custom-content-color); /* Sidebar */ - --ifm-sidebar-border-color: var(--custom-border-color); - --ifm-menu-color-active: var(--custom-primary); - --ifm-menu-link-padding-horizontal: 0rem; - --dropdown-icon-width: 0.625rem; - --dropdown-icon-height: 0.375rem; - --dropdown-icon-gap: 0.688rem; - --ifm-menu-link-padding-vertical: 0.5rem; - --sidebar-spacing-horizontal: 1.5rem; - --doc-sidebar-width: 20rem; - --custom-sidebar-padding: 0.5rem; + + // --sidebar-spacing-horizontal: 2rem; /* Doc item */ - --doc-item-container-width: 60rem; + --doc-item-container-width: 55rem; /* Doc Page */ - --doc-page-vertical-spacing: 2rem; /* Panel */ @@ -303,31 +261,6 @@ border-bottom: 1px solid var(--custom-border-color); } -.menu { - font-weight: var(--ifm-font-weight-regular); -} -.menu__link { - font-size: var(--custom-font-size-sm); - color: var(--custom-content-color-light); - padding-left: 10px; - padding-right: 10px; -} -.menu__link.menu__link--sublist { - font-weight: var(--ifm-font-weight-bold); - text-transform: uppercase; - font-size: smaller; - color: var(--custom-content-color-emphasis); -} -.menu__link.menu__link--active:not(.menu__link--sublist) { - /* background-color: transparent; */ - color: var(--custom-content-color-emphasis); -} -.menu__link:hover:not(.menu__link--active), -.menu__caret:hover { - background-color: transparent; - color: var(--custom-content-color-emphasis); -} - .pagination-nav__link { border-color: var(--custom-border-color); } diff --git a/apps/reference/src/theme/DocSidebar/Desktop/Content/index.js b/apps/reference/src/theme/DocSidebar/Desktop/Content/index.js index c8198eb129..1d5d55a609 100644 --- a/apps/reference/src/theme/DocSidebar/Desktop/Content/index.js +++ b/apps/reference/src/theme/DocSidebar/Desktop/Content/index.js @@ -17,7 +17,7 @@ const subNavRoutes = [ const headerNames = { api: { name: 'API', - icon: 'javascript-icon', + icon: 'api-icon', }, cli: { name: 'CLI', diff --git a/apps/reference/static/img/icons/api-icon.svg b/apps/reference/static/img/icons/api-icon.svg new file mode 100644 index 0000000000..6a7a3b6f54 --- /dev/null +++ b/apps/reference/static/img/icons/api-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/apps/reference/static/img/icons/cli-icon.svg b/apps/reference/static/img/icons/cli-icon.svg index 703e420f9b..6b2ea2fc2b 100644 --- a/apps/reference/static/img/icons/cli-icon.svg +++ b/apps/reference/static/img/icons/cli-icon.svg @@ -1,4 +1,19 @@ - - + + + + + + + + + + + + + + + + + diff --git a/tsconfig.json b/tsconfig.json index c3d8b930d8..f7e1a50f3f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,6 @@ { "compilerOptions": { + "jsx": "react", "skipLibCheck": true } }