Skip to content
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

feat(Android): Added tokenized gradients #1059

Merged
merged 21 commits into from
Oct 15, 2024

Conversation

qurle
Copy link
Contributor

@qurle qurle commented Sep 9, 2024

Упростил описание градиентов в теме Android, чтобы разрабы могли сами их парсить и привязывать к внутренним токенам вместо «плоских цветов».

struct.json до:

"gradient": {
	"gradientBlack": "rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.02) 15%, rgba(0, 0, 0, 0.08) 30%, rgba(0, 0, 0, 0.32) 70%, rgba(0, 0, 0, 0.38) 85%, rgba(0, 0, 0, 0.4) 100%",
	"gradientWhite": "rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.05) 15%, rgba(255, 255, 255, 0.2) 30%, rgba(255, 255, 255, 0.8) 70%, rgba(255, 255, 255, 0.95) 85%, rgba(255, 255, 255, 1) 100%",
	"gradientTint": "rgba(249, 249, 249, 0) 0%, rgba(249, 249, 249, 0.05) 15%, rgba(249, 249, 249, 0.2) 30%, rgba(249, 249, 249, 0.8) 70%, rgba(249, 249, 249, 0.95) 85%, rgba(249, 249, 249, 1) 100%",
	"gradient": "rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.05) 15%, rgba(255, 255, 255, 0.2) 30%, rgba(255, 255, 255, 0.8) 70%, rgba(255, 255, 255, 0.95) 85%, rgba(255, 255, 255, 1) 100%"
},

struct.json после:

"gradient": {
	"gradientBlack": "#00000060, transparent",
	"gradientWhite": "#FFFFFF, transparent",
	"gradientTint": "colorBackgroundTertiary, transparent",
	"gradient": "colorBackgroundContent, transparent"
},

Copy link

github-actions bot commented Sep 9, 2024

Coverage report

St.
Category Percentage Covered / Total
🟢 Statements
92.46% (+0.48% 🔼)
1275/1379
🟢 Branches
89.2% (+0.25% 🔼)
355/398
🟢 Functions
93.4% (+0.54% 🔼)
184/197
🟢 Lines
92.12% (+0.45% 🔼)
1180/1281
Show new covered files 🐣
St.
File Statements Branches Functions Lines
🟢
... / convertSnakeToCamel.ts
100% 100% 100% 100%
Show files with reduced coverage 🔻
St.
File Statements Branches Functions Lines
🟢
... / tokenHelpers.ts
100%
94.12% (-5.88% 🔻)
100% 100%
🟢
... / compileStructJSON.ts
100%
88.24% (-11.76% 🔻)
100% 100%

Test suite run success

471 tests passing in 38 suites.

Report generated by 🧪jest coverage report action from a6936b8

@@ -260,6 +261,13 @@ const gradients: VkontakteAndroidGradients = {
vkontakteGradientWomensDay: '#FF99CC, #E52E6A',
};

const gradients: Gradients = {
gradient: 'colorBackgroundContent, transparent',
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Если оставить так, то при сборке css получится битый токен. Кажется, нужно обернуть их в var(-- )

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Теоретически кто-то может заиспользовать эту тему в webview, так что лучше иметь рабочий css

Copy link
Contributor Author

@qurle qurle Sep 11, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Типа var(--color_background_content)?
А есть какое-то более изящное решение, чтобы передать разрабу градиент с именем токена?

У нас же нет чисто строковых токенов?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Мб просто добавить новые переменные, из которых разраб будет собирать градиенты 🤔

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Если var(--color_background_content) по каким-то причинам не подходит, то в целом можно новые токены тогда завести

А почему вариант с var не нравится?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@8coon
А почему вариант с var не нравится?

Потому что у нас будут CSS-переменные в JSON-файле для мобильных разработчиков. Не очень кросс-платформенно)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А если тогда добавить пост-процессинг этих значений и добалять var(-- только при сборке css-файлов?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Хочется наоборот в JSON засунуть эти алиасы (не в виде CSS), чтобы у разраба были не только сырые цвета. Если есть идеи, как это запостпроцессить, буду рад.

Если идей нет, то будем локально решать.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Можно дотюнить функцию alias из файла tokenHelpers.ts, но она работает так, что подставляет значение в итоговый токен. То есть если например указать в теме:

fontHeadline: alias('fontHeadline1'),
fontHeadline1: 12,

в сборке будет два токена --vkui--font_headline: 12px и --vkui--font_headline1: 12px. Я не уверен, что это то, что нужно.

Можешь пожалуйста описать задачу чуть подробнее?

@qurle qurle mentioned this pull request Sep 11, 2024
@8coon 8coon requested a review from a team as a code owner October 15, 2024 15:13
@8coon 8coon self-requested a review October 15, 2024 16:20
8coon
8coon previously approved these changes Oct 15, 2024
@8coon 8coon changed the base branch from master to next October 15, 2024 16:25
@8coon 8coon merged commit 00b6814 into next Oct 15, 2024
5 checks passed
@8coon 8coon mentioned this pull request Oct 16, 2024
@qurle qurle deleted the qurle/feat/android-tokenized-gradients branch December 11, 2024 11:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants