download
raw
6.25 kB
/**
* Use one of the built-in themes.
*
* @example
*
* ```ts
* import { THEME_SST } from "@openauthjs/openauth/ui/theme"
*
* export default issuer({
* theme: THEME_SST,
* // ...
* })
* ```
*
* Or define your own.
*
* ```ts
* import type { Theme } from "@openauthjs/openauth/ui/theme"
*
* const MY_THEME: Theme = {
* title: "Acne",
* radius: "none",
* favicon: "https://www.example.com/favicon.svg",
* // ...
* }
*
* export default issuer({
* theme: MY_THEME,
* // ...
* })
* ```
*
* @packageDocumentation
*/
/**
* A type to define values for light and dark mode.
*
* @example
* ```ts
* {
* light: "#FFF",
* dark: "#000"
* }
* ```
*/
export interface ColorScheme {
/**
* The value for dark mode.
*/
dark: string
/**
* The value for light mode.
*/
light: string
}
/**
* A type to define your custom theme.
*/
export interface Theme {
/**
* The name of your app. Also used as the title of the page.
*
* @example
* ```ts
* {
* title: "Acne"
* }
* ```
*/
title?: string
/**
* A URL to the favicon of your app.
*
* @example
* ```ts
* {
* favicon: "https://www.example.com/favicon.svg"
* }
* ```
*/
favicon?: string
/**
* The border radius of the UI elements.
*
* @example
* ```ts
* {
* radius: "none"
* }
* ```
*/
radius?: "none" | "sm" | "md" | "lg" | "full"
/**
* The primary color of the theme.
*
* Takes a color or both light and dark colors.
*
* @example
* ```ts
* {
* primary: "#FF5E00"
* }
* ```
*/
primary: string | ColorScheme
/**
* The background color of the theme.
*
* Takes a color or both light and dark colors.
*
* @example
* ```ts
* {
* background: "#FFF"
* }
* ```
*/
background?: string | ColorScheme
/**
* A URL to the logo of your app.
*
* Takes a single image or both light and dark mode versions.
*
* @example
* ```ts
* {
* logo: "https://www.example.com/logo.svg"
* }
* ```
*/
logo?: string | ColorScheme
/**
* The font family and scale of the theme.
*/
font?: {
/**
* The font family of the theme.
*
* @example
* ```ts
* {
* font: {
* family: "Geist Mono, monospace"
* }
* }
* ```
*/
family?: string
/**
* The font scale of the theme. Can be used to increase or decrease the font sizes across
* the UI.
*
* @default "1"
* @example
* ```ts
* {
* font: {
* scale: "1.25"
* }
* }
* ```
*/
scale?: string
}
/**
* Custom CSS that's added to the page in a `<style>` tag.
*
* This can be used to import custom fonts.
*
* @example
* ```ts
* {
* css: `@import url('https://fonts.googleapis.com/css2?family=Rubik:wght@100;200;300;400;500;600;700;800;900&display=swap');`
* }
* ```
*/
css?: string
}
/**
* Built-in default OpenAuth theme.
*/
export const THEME_OPENAUTH: Theme = {
title: "OpenAuth",
radius: "none",
background: {
dark: "black",
light: "white",
},
primary: {
dark: "white",
light: "black",
},
font: {
family: "IBM Plex Sans, sans-serif",
},
css: `
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@100;200;300;400;500;600;700&display=swap');
`,
}
/**
* Built-in theme based on [Terminal](https://terminal.shop).
*/
export const THEME_TERMINAL: Theme = {
title: "terminal",
radius: "none",
favicon: "https://www.terminal.shop/favicon.svg",
logo: {
dark: "https://www.terminal.shop/images/logo-white.svg",
light: "https://www.terminal.shop/images/logo-black.svg",
},
primary: "#ff5e00",
background: {
dark: "rgb(0, 0, 0)",
light: "rgb(255, 255, 255)",
},
font: {
family: "Geist Mono, monospace",
},
css: `
@import url('https://fonts.googleapis.com/css2?family=Geist+Mono:wght@100;200;300;400;500;600;700;800;900&display=swap');
`,
}
/**
* Built-in theme based on [SST](https://sst.dev).
*/
export const THEME_SST: Theme = {
title: "SST",
favicon: "https://sst.dev/favicon.svg",
logo: {
dark: "https://sst.dev/favicon.svg",
light: "https://sst.dev/favicon.svg",
},
background: {
dark: "#1a1a2d",
light: "rgb(255, 255, 255)",
},
primary: "#f3663f",
font: {
family: "Rubik, sans-serif",
},
css: `
@import url('https://fonts.googleapis.com/css2?family=Rubik:wght@100;200;300;400;500;600;700;800;900&display=swap');
`,
}
/**
* Built-in theme based on [Supabase](https://supabase.com).
*/
export const THEME_SUPABASE: Theme = {
title: "Supabase",
logo: {
dark: "https://supabase.com/dashboard/_next/image?url=%2Fdashboard%2Fimg%2Fsupabase-dark.svg&w=128&q=75",
light:
"https://supabase.com/dashboard/_next/image?url=%2Fdashboard%2Fimg%2Fsupabase-light.svg&w=128&q=75",
},
background: {
dark: "#171717",
light: "#f8f8f8",
},
primary: {
dark: "#006239",
light: "#72e3ad",
},
font: {
family: "Varela Round, sans-serif",
},
css: `
@import url('https://fonts.googleapis.com/css2?family=Varela+Round:wght@100;200;300;400;500;600;700;800;900&display=swap');
`,
}
/**
* Built-in theme based on [Vercel](https://vercel.com).
*/
export const THEME_VERCEL: Theme = {
title: "Vercel",
logo: {
dark: "https://vercel.com/mktng/_next/static/media/vercel-logotype-dark.e8c0a742.svg",
light:
"https://vercel.com/mktng/_next/static/media/vercel-logotype-light.700a8d26.svg",
},
background: {
dark: "black",
light: "white",
},
primary: {
dark: "white",
light: "black",
},
font: {
family: "Geist, sans-serif",
},
css: `
@import url('https://fonts.googleapis.com/css2?family=Geist:wght@100;200;300;400;500;600;700;800;900&display=swap');
`,
}
// i really don't wanna use async local storage for this so get over it
/**
* @internal
*/
export function setTheme(value: Theme) {
// @ts-ignore
globalThis.OPENAUTH_THEME = value
}
/**
* @internal
*/
export function getTheme() {
// @ts-ignore
return globalThis.OPENAUTH_THEME || THEME_OPENAUTH
}

Xet Storage Details

Size:
6.25 kB
·
Xet hash:
bdbd1582038dbe8ae3dfabe5f554c26d830ca992ad2ec1d73de233e79cf8b5d8

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.