/
kaws
/
ui-kit-ce
Обзор
Документация
Войти
/
kaws
/
ui-kit-ce
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
packages/theme/src/ThemeContext.ts
49 строк
2 KB
Урядышев Павел Александрович
feat(theme): реализован новый провайдер для работы с Shadow DOM
01 сен 2025, 17:05
01 сен 2025, 17:05
aa1c3a8
Код
Авторство
О чём код?
'use client' import React from 'react' import { createUseStyles as CssInJsCreateUseStyles, DefaultTheme, createTheming, Theming, } from 'react-jss' import { Classes, Styles, StyleSheetFactoryOptions } from 'jss' import { Theme } from './interface' import { createTheme } from './createTheme' import { getThemeDefaults } from './utils' interface BaseOptions<Theme = DefaultTheme> extends StyleSheetFactoryOptions { index?: number theming?: Theming<Theme> } interface CreateUseStylesOptions<Theme = DefaultTheme> extends BaseOptions<Theme> { name?: string } //#region Перезапись дефолтной темы с помощью глобальной переменной DEFAULT_UIK_THEME (только для команды ИДС, в остальных случаях не рекомендуется к использованию!!!) const defaultTheme = createTheme(getThemeDefaults()) //#endregion const ThemeContext = React.createContext<Theme>(defaultTheme) const theming = createTheming<Theme>(ThemeContext) const { withTheme, ThemeProvider: ReactJssThemeProvider, useTheme } = theming /** * */ function createUseStyles<C extends string = string, Props = unknown>( styles: Styles<C, Props, Theme> | ((theme: Theme) => Styles<C, Props>), options?: CreateUseStylesOptions<Theme> ): (data?: Props & { theme?: Theme }) => Classes<C> { return CssInJsCreateUseStyles<string, Props, Theme>(styles, { theming, ...options, }) } export { withTheme, ReactJssThemeProvider, useTheme, createUseStyles }