UNPKG

@serendie/ui

Version:

Adaptive UI component library as part of Serendie Design System by Mitsubishi Electric

75 lines (74 loc) 2.89 kB
import { ColorTheme, ColorMode } from './ThemeContext'; export interface ColorSchemeScriptOptions { /** カラーテーマを直接指定(localStorageより優先) */ colorTheme?: ColorTheme; /** カラーモードを直接指定(localStorageより優先) */ colorMode?: ColorMode; /** デフォルトのカラーテーマ(デフォルト: 'konjo')。colorTheme未指定かつlocalStorageに値がない場合に使用 */ defaultTheme?: ColorTheme; /** デフォルトのカラーモード(デフォルト: 'light')。colorMode未指定かつlocalStorageに値がない場合に使用 */ defaultColorMode?: ColorMode; /** localStorageのキー(テーマ)(デフォルト: 'serendie-color-theme') */ themeStorageKey?: string; /** localStorageのキー(モード)(デフォルト: 'serendie-color-mode') */ modeStorageKey?: string; } /** * FOUC(Flash of Unstyled Content)を防ぐためのインラインスクリプトを生成する * * このスクリプトはHTMLの<head>内にインラインで埋め込むことで、 * ページ読み込み時に正しいテーマが即座に適用されるようにします。 * * @param options - スクリプト生成オプション * @returns インラインスクリプトの文字列 * * @example * ```tsx * // Next.js App Routerでの使用例 * // 推奨: ColorSchemeScriptコンポーネントを使用してください * import { getColorSchemeScript } from '@serendie/ui'; * * export default function RootLayout({ children }) { * return ( * <html suppressHydrationWarning> * <head> * <script * dangerouslySetInnerHTML={{ * __html: getColorSchemeScript({ colorTheme: 'konjo', colorMode: 'system' }) * }} * /> * </head> * <body>{children}</body> * </html> * ); * } * ``` */ export declare function getColorSchemeScript(options?: ColorSchemeScriptOptions): string; /** * FOUC防止用のReactコンポーネント * Next.jsのApp Routerで使用する場合のヘルパー * * SerendieProviderの内側で使用する場合、propsを省略するとContextから * テーマ設定を自動的に取得します。 * * @example * ```tsx * // layout.tsx(推奨: SerendieProviderの内側で使用) * import { ColorSchemeScript, SerendieProvider } from '@serendie/ui'; * * export default function RootLayout({ children }) { * return ( * <SerendieProvider lang="ja" colorTheme="konjo" colorMode="system"> * <html suppressHydrationWarning> * <head> * <ColorSchemeScript /> * </head> * <body>{children}</body> * </html> * </SerendieProvider> * ); * } * ``` */ export declare function ColorSchemeScript(props?: ColorSchemeScriptOptions): import("react").JSX.Element;