Для разработчиков приложений
Runtime, Bootstrap и переходы
Применяйте проверенные темы атомарно к DOM и восстанавливайте предпочтения первого отрисовки вернувшегося посетителя.Среда выполнения — это единственный источник состояния браузера.
ts
import { migrateOriaStandardV1ToV2 } from "@oriatheme/core";
import { createOriaThemeRuntime } from "@oriatheme/runtime-dom";
import { oriaPresetThemes } from "@oriatheme/presets";
const runtime = createOriaThemeRuntime({
presets: oriaPresetThemes,
defaultThemeId: "oria-default",
migrations: [migrateOriaStandardV1ToV2],
transition: { type: "view-transition", respectReducedMotion: true },
});
runtime.start();
runtime.setTheme("oria-ocean", { animate: true });
runtime.setAppearance("system");После запуска среда выполнения отслеживает обновления системного режима, постоянства и перекрестных таблиц. Вызовите уничтожение, когда SPA удаляет среду выполнения. Поле миграции в этом примере — единственный способ принять сохраненные пользовательские темы версии 1; без него данные v1 безопасно отклоняются. См. «Миграция с версии 1».
Три первых слоя краски
- SSR/SSG сначала выводит статические переменные, сгенерированные из доверенной, полностью разрешенной темы по умолчанию.
- Запустите createBootstrapStorageScript в голове или вызовите bootstrapTheme перед монтированием Vite.
- Поставщик платформы или среда выполнения повторно проверяет все состояние и становится владельцем после запуска.
tsx
import { createBootstrapStorageScript } from "@oriatheme/runtime-dom";
const bootstrapScript = createBootstrapStorageScript({ contract: { name: "oria-standard", version: 2 } });
// In a Next Server Component head:
<script id="oria-theme-bootstrap" dangerouslySetInnerHTML={{ __html: bootstrapScript }} />Только явные действия оживляют
Передавайте animate для инициируемых пользователем вызовов setTheme или setAppearance. Bootstrap, восстановление, системные изменения и синхронизация между вкладками всегда переключаются атомарно без анимации; соблюдайте ограниченное движение.
Продолжение: жизненный цикл пользовательской темы