-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Research] токены onDark / onLight / Inverse #1152
Comments
Я за этот вариант.
ИМХО это скорее плюс.
|
ну я тоже не до конца был уверен, что прям минус. Прост, объём времени достаточный понадобится для этого. Но тут скорее при любом подходе такое нужно будет делать |
Я правильно понимаю, что будет кастомный миксин, в котором вшит набор токенов по каждому компоненту из либы. Этот миксин будет применятся в стилях контейнера LightContainer, к примеру? Не будет ли проблем, если будет использоваться одновременно несколько таких контейнеров на странице? Что я имею в виду: если изначально такие контейнеры будут реализовываться у нас - будут включены токены всех доступных компонентов. Нужно тогда предусмотреть механизм, который бы давал пользователю возможность указать как пропс компоненты, которые он хочет переопределить через контейнер. |
да, либо миксин можно использовать на своем контейнере, либо наш компонент. Кажется, что проблем не должно быть, так как токены изолируются на верхних уровнях контейнеров если их друг в друга не вкладывать. А вот если вкладывать, то надо проверять и вообще понять, хотим ли мы и такой кейс поддерживать |
да, у нашего компонента нужно будет сделать такое же API, как и у миксинов, в которых можно указать для каких компонент переопределять токены |
Ссылка на прототип подхода.
На что не надо обращать внимание в примере
<div className="plasma-combobox">
-> этот класс должен висеть на самом компонентеCombobox
, но из-за бага сейчас это ломается.--plasma-dropdown-item-color-selected
), т.к. вCombobox
используются другие токены цветаКак использовать
Спецификация
Шаги для реализации такого подхода
Дополнительный функционал
<LightContainer />
/<DarkContainer />
/<InverseContainer />
или<ColoredContainer mode="onLight | onDark | inverse"/>
с зашитой внутри логикой по переопределению токенов цветаon-light.module.css
,on-dark.module.css
,inverse.module.css
, в которых будут лежать классы, которые пользователь сможет точечно добавлять на контейнеры.Достоинства и недостатки метода
+
Нет необходимости указывать для каждо компонента режим отображения. Т.к. частый кейс - это именно использования группы компонент в контейнере+
Так жесть возможность точечного указания компонент, которые необходимо модифицировать+
Работает в билд тайме, т.к. при сборке библиотеки сформируется только те css правила, которые были выбраны-
Необходимо произвести большую работу по ревизии всех используемых токенов в компонентах-
Возможно иногда пользователям понадобиться делать дополнительные врапперы, чтобы стилизовать набор компонент в контейнерах-
Необходимо синхронизировать токены в компоненте, которые перечисляются в конфигах с мапингомThe text was updated successfully, but these errors were encountered: