OriaTheme
GitHub

Для разработчиков приложений

React и Next.js

Используйте Provider и Hooks, чтобы подписаться на одну среду выполнения; Далее помещаются CSS и Bootstrap по умолчанию в HTML первой отрисовки.

Подключите одного провайдера

tsx
import { OriaThemeProvider } from "@oriatheme/react";
import { oriaPresetThemes } from "@oriatheme/presets";

export function Providers({ children }: { children: React.ReactNode }) {
  return (
    <OriaThemeProvider config={{
      presets: oriaPresetThemes,
      defaultThemeId: "oria-default",
    }}>
      {children}
    </OriaThemeProvider>
  );
}

Прочитайте снимок и измените предпочтения с помощью хуков

tsx
import { useOriaTheme, useThemeSnapshot } from "@oriatheme/react";

export function ThemeControls() {
  const { setAppearance, setTheme } = useOriaTheme();
  const activeId = useThemeSnapshot((snapshot) => snapshot.preference.activeThemeId);

  return <button onClick={() => setTheme(activeId === "oria-ocean" ? "oria-default" : "oria-ocean")}>
    Switch theme
  </button>;
}

useThemeSnapshot предназначен для подписки на стабильный срез; не воссоздавайте среду выполнения и не копируйте ее состояние внутри компонентов.

Next.js: первая раскраска и редактор по требованию.

Выведите доверенный CSS по умолчанию и сценарий Bootstrap в заголовок серверного компонента, затем поместите поставщика в клиентский компонент. Загрузите закрытый локальный редактор ThemeEditor с помощью Dynamic(..., { ssr: false }) и визуализируйте его только после того, как пользователь откроет его.

Продолжение: Интеграция Vue