ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
ΠΡΠΎΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠΊΠ΅Π½Ρ Π΅Π΄ΠΈΠ½ΠΎΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½-ΡΠΈΡΡΠ΅ΠΌΡ VKUI ΠΈ ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ΅ΠΌ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ².
Π’Π΅ΠΌΡ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΡ: css
, scss
, less
, pcss
, styl
, js
, json
.
ΠΠ»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΡΠ΅ΠΌ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ TypeScript.
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
- ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ
- Roadmap
- ΠΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ
- ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
- Changelog (Π°ΡΡ ΠΈΠ²Π½Π°Ρ Π²Π΅ΡΡΠΈΡ)
ΠΠΊΡΡΠ°Π»ΡΠ½ΡΠΉ changelog Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅Π»ΠΈΠ·ΠΎΠ² Π² GitHub!
Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ npm-ΠΏΠ°ΠΊΠ΅Ρ @vkontakte/vkui-tokens
:
npm i --save @vkontakte/vkui-tokens@latest
Π Π»ΡΠ±ΠΎΠΌ CSS-ΡΠ°ΠΉΠ»Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΠ°ΠΉΠ» ΡΠ΅ΠΌΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ :
@import '@vkontakte/vkui-tokens/themes/vkBase/cssVars/declarations/index.css';
.class:hover {
background-color: var(--vkui--color_background--hover);
}
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ CSS-ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ΅ΡΠ΅Π· ΠΎΠ±ΡΠ΅ΠΊΡ Π² JavaScript (TypeScript)
import baseTheme from '@vkontakte/vkui-tokens/themes/vkBase/cssVars/theme';
// Π‘ΠΎΠ±ΡΡΠ²Π΅Π½ΠΎ ΠΈΠΌΡ CSS-ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ (Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Π°)
console.log(baseTheme.colorBackground.hover.name); // --vkui--color_background--hover;
// Π‘Π½ΠΈΠΏΠΏΠ΅Ρ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ CSS-ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
console.log(baseTheme.colorBackground.hover.value); // var(--vkui--color_background--hover, #F5F5F7)
// ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ (Ρ ΡΡΡΡΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ)
// ΡΠ·Π½Π°ΡΠΌ, ΡΠ΅ΠΌΡ ΡΠ°Π²Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²Π½ΡΡΡΠΈ myElement:
getComputedStyle(myElement).getPropertyValue(baseTheme.colorBackground.hover.name);
ΠΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠΊΠ΅Π½ΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°
Π§ΡΠΎΠ±Ρ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠΎΡ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Π²ΠΈΠ΄ ΡΠ΅ΠΌΡ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ
ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π½ΡΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ
.vkui--force-${auto | regular | compact | large | largeX ...}
.
Π‘ΠΌΠΎΡΡΠΈ Π΄Π΅ΠΌΠΎ ΡΠ°Π±ΠΎΡΡ
Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΡΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΈ ΡΠΏΠ΅Ρ. ΠΊΠ»Π°ΡΡΠΎΠ².
Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π±ΡΠ΅ΠΉΠΊΠΏΠΎΠΈΠ½ΡΠ°
(ex. --vkui--sizefield_height--**_compact**), ΠΎΠ½ΠΈ Π²ΡΠ΅ ΡΠΎΠΆΠ΅
ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π² :root
)
ΠΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΡΠ΅ΠΌΡ Π² ΡΠ°ΠΉΠ»Π΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ:
import baseTheme from '@vkontakte/vkui-tokens/themes/vkBase';
// do whatever you want with baseTheme
ΠΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ ΡΠ°ΠΉΠ» Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΡΠ΅ΠΌΠΎΠΉ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΡ ΡΡΠ΄Π° (ΡΠ½ΠΈΠ·Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ SCSS)
@import '~@vkontakte/vkui-tokens/themes/vkBase/index';
.myAwesomeClass {
background-color: $color-bg;
}
.myAwesomeClass:hover {
background-color: $color-bg--hover;
}
-
ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ Π² ΡΠ°ΠΉΠ», Π³Π΄Π΅ Ρ ΠΎΡΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΌΡ, ΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ Π΅Ρ:
@import '@vkontakte/vkui-tokens/themes/vkBase';
-
ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ Π² ΡΠ°ΠΉΠ» ΡΠ΅ΠΌΡ, ΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ°ΠΌ Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΈΡ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
width: var(--size-content-block-width);
-
ΠΡΠΎΡΡΠΎ ΡΠ°ΠΊ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ postcss:
npm i --save-dev postcss
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° Ρ postcss Π΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΡΡΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΠΆΠ΅ Π½Π°Π΄ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ:
npm i --save-dev postcss-cli
-
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ postcss. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ°ΠΉΠ» postcss.config.js (ΠΌΠΎΠΆΠ½ΠΎ Π² Π»ΡΠ±ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π½ΠΎ Π»ΡΡΡΠ΅ Π² ΠΊΠΎΡΠ½Π΅) ΠΈ ΠΏΠΈΡΠ΅ΠΌ Π² Π½Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ:
const postcssPresetEnv = require('postcss-preset-env'); module.exports = { plugins: [ require('postcss-import'), require('precss'), require('postcss-css-variables'), require('postcss-custom-media'), require('postcss-media-minmax'), require('postcss-extend-rule'), postcssPresetEnv({ stage: 0, }), require('postcss-color-mix'), require('cssnano'), ], };
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ Π½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ Π²ΡΠ΅ ΡΡΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π»ΡΡΡΠ΅ ΠΏΠΎΡΠΈΡΠ°ΡΡ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ (https://www.postcss.parts/). ΠΡΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ°ΠΉΠ» Π²Π°ΡΠ΅ΠΉ ΡΠ΅ΠΌΡ ΠΈ Π²Π°Ρ css (scss ΠΈ Π΄Ρ.), ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ.
-
Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ Π² ΠΊΠΎΠ½ΡΠΈΠ³Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
npm i --save-dev postcss-import
-
ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ ΡΠ±ΠΎΡΠΊΡ postcss.
Π‘Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ postcss ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ. ΠΡΠΎ Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΡΡ https://github.com/postcss/postcss-cli
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
postcss src/main.css -c ./ --dir public
Π’Π°ΠΊΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡΠΎΠ³ΠΎΠ½ΠΈΡ ΡΠ°ΠΉΠ» src/main.css Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³Π° ΠΈΠ· ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΏΠ°ΠΏΠΊΠΈ ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΠΏΠ°ΠΏΠΊΡ public.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΈ ΡΠ΅ΠΌΡ, ΠΎΡ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡΡΡ, ΠΈ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΎΠ±ΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ΅ΠΌΡ Π² Π½ΡΠΆΠ½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅.
Π‘Π±ΠΎΡΠΊΠ° ΡΠ΅ΠΌΡ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ ΡΠ°ΡΠΊΡΡΡΠΈΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠ²Π΅ΡΠΎΠ² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ (hover, active), ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΠ΅ ΠΈ "ΠΏΠΈΠΊΡΠ΅Π»ΠΈΠ·Π°ΡΠΈΡ" Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈ Ρ.Π΄.
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°Π½Ρ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π² Node
-ΡΡΠ΅Π΄Π΅, ΠΈ Π½Π΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠ΅ΠΌΡ Π² ΡΠ°Π½ΡΠ°ΠΉΠΌΠ΅ (Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Π΅).
ΠΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Π΄Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΡΠΊΡΠΈΠΏΡΠΎΠ² Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ:
npm i --save-dev color common-tags css.escape
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎΠ·ΡΠΌΠ΅ΠΌ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΠ΅ΠΌΡ (ΡΠ²Π΅ΡΠ»ΡΡ ΠΈ ΡΠ΅ΠΌΠ½ΡΡ) ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊ Π½ΠΈΠΌ Π½ΠΎΠ²ΡΠΉ ΡΠΎΠΊΠ΅Π½ ΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΎΠ΄ΠΈΠ½ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΊΡΠΈΠΏΡ:
import type { ThemeDescription } from '@vkontakte/vkui-tokens/interfaces/general';
import type { Adaptive } from '@vkontakte/vkui-tokens/interfaces/general/tools';
import {
lightTheme as baseTheme,
darkTheme,
} from '@vkontakte/vkui-tokens/themeDescriptions/base/vk.js';
import { expandAll } from '@vkontakte/vkui-tokens/build/expandTheme';
import { compileStyles } from '@vkontakte/vkui-tokens/build/compilers/styles/compileStyles';
interface MyNewAwesomeThemeDescription extends ThemeDescription {
myNewAwesomeToken: Adaptive<number>;
}
const myNewAwesomeTheme: MyNewAwesomeThemeDescription = {
...baseTheme,
// ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΌΡ
themeName: 'myAwesomeTheme',
// ΠΠ°Π·ΠΎΠ²Π°Ρ ΡΠ°ΡΡΡ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠ΅ΠΌΡ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: .vkui--myAwesomeTheme--light)
themeNameBase: 'myAwesomeTheme',
// Π’Π΅ΠΌΠ°, ΠΎΡ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π°ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, Π½ΠΎΡΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ Ρ
Π°ΡΠ°ΠΊΡΠ΅Ρ
themeInheritsFrom: 'vkBase',
// ΠΠΎΠ²ΡΠΉ Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΡΠΉ ΡΠΎΠΊΠ΅Π½
myNewAwesomeToken: {
regular: 20,
compact: 12,
},
colors: {
// Π‘ΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠ΅ΠΌΡ
...baseTheme.colors,
// ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
colorTextAccentThemed: '#ff0000',
},
};
const myNewAwesomeThemeDark: MyNewAwesomeThemeDescription = {
...myNewAwesomeTheme,
...darkTheme,
themeName: 'myAwesomeThemeDark',
themeNameBase: 'myAwesomeTheme',
themeInheritsFrom: 'vkBaseDark',
colors: {
...darkTheme.colors,
colorTextAccentThemed: '#00ff00',
},
};
// ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΏΡ ΡΠ΅ΠΌ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ
const { theme, pixelifyTheme, cssVarsTheme } = expandAll(myNewAwesomeTheme);
const { pixelifyTheme: pixelifyThemeDark } = expandAll(myNewAwesomeThemeDark);
// ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π²Π΅Π±Π΅ Π²Π°ΠΌ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ "ΠΏΠΈΠΊΡΠ΅Π»ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ" ΡΠ΅ΠΌΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ '.css':
const cssString = compileStyles('css', pixelifyTheme);
const cssStringDark = compileStyles('css', pixelifyThemeDark);
// ΠΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ CSS-ΡΡΡΠΎΠΊΠΈ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΠ°Π²ΠΈΡΡ Π² DOM ΠΈΠ»ΠΈ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ Π² ΡΠ°ΠΉΠ»
- ΠΠΎΠ±Π°Π²ΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΌΠ½ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ active, hover ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ ΡΠ²Π΅ΡΠ°. ΠΡΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΡΠΌΠ½ΡΠΉ ΠΈ ΡΠ²Π΅ΡΠ»ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ΅ΠΌ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΠΌ ΡΠ²Π΅Ρ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅. (ΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΡΠΎ ΡΠ²Π΅Ρ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΡ, ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΡ ΡΠΈΠ½Π΅Π³ΠΎ, ΠΏΠ»ΠΎΡ ΠΎ Π²ΠΈΠ΄Π΅Π½ Π½Π° Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΎΠ²).
- ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠ²Π΅ΡΠΎΠ² ΠΏΠΎ Π·Π°ΡΠ°Π½Π΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ ΠΏΠ°Π»ΠΈΡΡΠ΅.
- Π’Π΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΎΠΊΠ΅Π½Π°.
- ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.
- Π‘Π°ΠΉΡ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ.
- ΠΠΎΠΊΠ»Π°Π΄ ΠΏΡΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½-ΡΠΈΡΡΠ΅ΠΌΡ Π½Π° ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π΅: ΡΠ°ΠΌ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, Π·Π°ΡΠ΅ΠΌ Π½ΡΠΆΠ½Ρ Π΄ΠΈΠ·Π°ΠΉΠ½-ΡΠΎΠΊΠ΅Π½Ρ, ΠΏΡΠΈΡΡΠΌ ΡΡΡ UI-kit ΠΈ ΠΊΠ°ΠΊ Π΄Π΅Π»Π°ΡΡ ΡΠ΅ΠΌΠΈΠ·Π°ΡΠΈΡ.
- Π‘Π΅ΡΠΈΡ Π²ΠΈΠ΄Π΅ΠΎΡΠΎΠ»ΠΈΠΊΠΎΠ² Π½Π° youtube, Π³Π΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ (Π½ΠΎ ΡΠΎ ΡΡΠ°ΡΡΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ, Π½Π΅ ΠΏΡΠ³Π°ΠΉΡΠ΅ΡΡ), ΠΊΠ°ΠΊ ΡΠ΄ΡΠ° Π΄ΠΈΠ·Π°ΠΉΠ½-ΡΠΈΡΡΠ΅ΠΌΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅: ΠΏΠ΅ΡΠ²ΡΠΉ, Π²ΡΠΎΡΠΎΠΉ, ΡΡΠ΅ΡΠΈΠΉ
- Opensource Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² (UI-kit) VKUI, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΠΊΠ΅Π½Ρ.
- Π‘Π°ΠΉΡ Π΄ΠΈΠ·Π°ΠΉΠ½-ΡΠΈΡΡΠ΅ΠΌΠ° Paradigm, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΡΠΎΡΠ»Π° ΡΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°. Π’Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΡΠΊΠΈΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΈ ΠΈΠ΄Π΅ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°Π»ΠΈ ΠΎΡΠ½ΠΎΠ²ΠΎΠΉ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.