Figma tokens
ΠΠ°ΠΊΠ΅Ρ figma-ΡΠΎΠΊΠ΅Π½ΠΎΠ² Π΄ΠΈΠ·Π°ΠΉΠ½-ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Cloud.ru ΠΈ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° TeamSnack
ΠΠ°ΡΠ°Π»ΠΎ ΡΠ°Π±ΠΎΡΡ
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ:
pnpm deps
- ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ±ΠΎΡΠΊΡ:
pnpm build:all
Π ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡΡ:
- CSS-ΡΠ°ΠΉΠ» ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠΎΠΊΠ΅Π½ΠΎΠ² (ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π²Π° ΠΊΠ»Π°ΡΡΠ° Π΄Π»Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ - .light ΠΈ .dark):
build/css/brand.module.css
- SCSS-ΡΠ°ΠΉΠ»Ρ Ρ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ:
build/scss
- TS-ΡΠ°ΠΉΠ»Ρ Ρ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ:
build/ts
Π Π°Π±ΠΎΡΠ° Ρ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ
Π‘Π΅ΠΌΠ°Π½ΡΠΈΠΊΠ° ΡΠΎΠΊΠ΅Π½ΠΎΠ²
ΠΡΡΡ 3 ΡΠ»ΠΎΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ² - Π±Π°Π·ΠΎΠ²ΡΠ΅, ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΡΠ΅ (Π»Π΅ΠΆΠ°Ρ Π² ΠΏΠ°ΠΏΠΊΠ°Ρ
Base, Theme ΠΈ Components ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ)
- ΠΠ°Π·ΠΎΠ²ΡΠ΅ - ΡΠ°ΠΌΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΎΠΊΠ΅Π½Ρ; Π²Π½ΡΡΡΠΈ ΠΏΠΎΠ΄Π΅Π»Π΅Π½Ρ Π½Π° ΡΠΎΠΊΠ΅Π½Ρ ΡΠ²Π΅ΡΠΎΠ², ΡΡΠΈΡΡΠΎΠ² ΠΈ Π°Π½Π°ΡΠΎΠΌΠΈΠΈ
- Π’Π΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Ρ - ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΠΎΠΊΠ΅Π½Ρ; ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π² Π΄Π²ΡΡ
ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡΡ
Π΄Π»Ρ ΡΠ²Π΅ΡΠΎΠ² - Light ΠΈ Dark
- Π’ΠΎΠΊΠ΅Π½Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² - ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Ρ (Π»ΠΈΠ±ΠΎ Π½Π°ΠΏΡΡΠΌΡΡ Π½Π° Π±Π°Π·ΠΎΠ²ΡΠ΅, Π΅ΡΠ»ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ΅ΠΌΠΈΠ·Π°ΡΠΈΡ ΠΊΠ°ΠΊΠΈΡ
-Π»ΠΈΠ±ΠΎ ΡΠ²-Π²); ΠΏΠΎΠ΄Π΅Π»Π΅Π½Ρ ΠΏΠΎΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΠΎ

Π’ΠΈΠΏΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ²
- ΠΠ±ΡΡΠ½ΡΠ΅ - ΡΠΎΠΊΠ΅Π½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΎΠ΄Π½ΠΎ ΡΠ²-Π²ΠΎ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΡΠ²-Π²Ρ css Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ
simple-var Π»ΠΈΠ±ΠΎ Π½Π°ΠΏΡΡΠΌΡΡ ΡΠ΅ΡΠ΅Π· css-var, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΏΡΠΎΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ
.buttonLabel {
color: simple-var($theme-variables, 'sys', 'primary', 'on-accent');
color: $sys-primary-on-accent;
}
- ΠΠΎΠΌΠΏΠΎΠ·ΠΈΡΠ½ΡΠ΅ (composite, typography, border) - ΡΠΎΠΊΠ΅Π½ Π²Π½ΡΡΡΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ²-Π² css - ΠΈΡ
Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΈΠΊΡΠΈΠ½Π°
composite-var
.buttonLabel {
@include composite-var($theme-variables, 'sans', 'label', 'size-s');
@include composite-var($sans-label-size-s);
}
- Π‘Π»ΡΡΠ°ΠΈ-ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ:
- Π’ΠΎΠΊΠ΅Π½ Π΄Π»Ρ ΡΠ²-Π²Π° outline - Π² figma Π΄Π»Ρ Π½Π΅Π³ΠΎ Π½Π΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ Π½Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠ½ΡΠΉ ΡΠΎΠΊΠ΅Π½ ΡΠΈΠΏΠ° border. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π΄Π»Ρ Π½Π΅Π³ΠΎ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΠ²ΠΎΠΉ ΠΌΠΈΠΊΡΠΈΠ½
outline-var
.button {
&:focus-visible {
@include outline-var($container-focused-available-size-s);
}
}
Π‘Π²ΡΠ·ΠΈ ΡΠ»ΠΎΡΠ² ΡΠΎΠΊΠ΅Π½ΠΎΠ²

-
Base/Colors (References palette)
ΠΠ°Π·ΠΎΠ²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ System palette
ΠΡΠΎ Π½Π°Π±ΠΎΡΡ ΡΠΎΠ½ΠΎΠ² Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ°, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΉ Π½ΠΎΠΌΠ΅Ρ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ²Π΅Ρ ΡΠ°Π·Π»ΠΎΠΆΠ΅Π½ Π½Π° 20 ΡΠΎΠ½ΠΎΠ² ΠΎΡ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΡΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ»ΠΎΠ³ΠΎ.
ΠΠ»Ρ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ ΠΎ ΡΠ²Π΅ΡΠ΅, ΠΎΠ½ΠΈ ΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠΌΠΈ ΡΠ²Π΅ΡΠ°ΠΌΠΈ ΡΠ°Π΄ΡΠ³ΠΈ.
ΠΡΠ±ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΎΡΡΠ°Π·ΡΡΡΡ Π½Π° System palette
-
Themes/Color (System palette)
ΠΠ°Π±ΠΎΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΡΠΈΠ»Π΅ΠΉ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° Components ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°Ρ
Π½Π°ΠΏΡΡΠΌΡΡ ΠΊΠ°ΠΊ Π² figma, ΡΠ°ΠΊ ΠΈ ΠΊΠΎΠ΄Π΅. ΠΡΠΈ ΡΡΠΈΠ»ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² Composition ΡΠΎΠΊΠ΅Π½Π°Ρ
. ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠ° Π² Composition ΡΠΎΠΊΠ΅Π½Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΠ΄Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΡ
ΡΠΎΠΊΠ΅Π½ΠΎΠ² Π² ΠΊΠΎΡΠΎΡΡΡ
ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ²Π΅Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΌΠ΅Π½ΡΡΡ ΡΠ²Π΅Ρ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Composition ΡΠΎΠΊΠ΅Π½Π°.
System ΠΏΠ°Π»ΠΈΡΡΠ°, Π² ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ References, ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΠΌΠ΅Π½ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΠ²Π΅ΡΠΎΠ².
System ΠΏΠ°Π»ΠΈΡΡΠ° ΠΈΠΌΠ΅Π΅Ρ 2 ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ - ΡΠ΅ΠΌΠ½Π°Ρ ΠΈ ΡΠ²Π΅ΡΠ»Π°Ρ. ΠΡΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π½Π°ΡΠ»Π΅Π΄ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠΎΠ½Π° References ΠΏΠ°Π»ΠΈΡΡΡ, Π½Π°ΡΠ»Π΅Π΄ΠΈΠ΅ ΡΠΎΠ½ΠΎΠ² Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ.
ΠΡΠ±ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΎΡΡΠ°Π·ΡΡΡΡ Π½Π° Components.
-
Base/Fonts
ΠΠ°Π±ΠΎΡ Π±Π°Π·ΠΎΠ²ΡΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΡΠΈΠ»Π΅ΠΉ ΡΠΈΠΏΠΎΠ³ΡΠ°ΡΠΈΠΊΠΈ - ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ ΡΡΠΈΡΡΠΎΠ², Π²Π΅Ρ ΡΡΠΈΡΡΠ°, Π²ΡΡΠΎΡΠ° ΡΡΡΠΎΠΊΠΈ, ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠΈΡΡΠ°, ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» ΠΌΠ΅ΠΆΠ΄Ρ Π±ΡΠΊΠ²Π°ΠΌΠΈ, ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» ΠΌΠ΅ΠΆΠ΄Ρ Π°Π±Π·Π°ΡΠ°ΠΌΠΈ, Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΡΠ΅ΠΊΡΡΠ°
ΠΡΠ±ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΎΡΡΠ°Π·ΡΡΡΡ Π½Π° Typography
-
Themes/Typography
ΠΠ°Π±ΠΎΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΡΠΈΠ»Π΅ΠΉ ΡΠΈΠΏΠΎΠ³ΡΠ°ΡΠΈΠΊΠΈ, ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π½Π°ΠΏΡΡΠΌΡΡ Π² ΡΠΈΠ³ΠΌΠ° ΠΈ ΠΊΠΎΠ΄Π΅.Π‘Π΅ΠΌΠ°Π½ΡΠΈΠΊΠ° ΡΡΠΈΠ»Π΅ΠΉ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° 5 ΡΠΎΠ»Π΅ΠΉ, Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠΎΠ»ΠΈ Π·Π°Π΄Π°ΡΡΡΡ ΠΏΠΎ 3 ΡΠ°Π·ΠΌΠ΅ΡΠ°.
Typography ΠΈΠΌΠ΅Π΅Ρ 2 ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ - ΡΠ΅ΠΌΠ½Π°Ρ ΠΈ ΡΠ²Π΅ΡΠ»Π°Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠΈΠ»Π΅ΠΉ Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ.
Π¦Π²Π΅Ρ ΡΠΈΠΏΠΎΠ³ΡΠ°ΡΠΈΠΊΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ ΠΈΠ· Themes/Color
ΠΡΠ±ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΎΡΡΠ°Π·ΡΡΡΡ Π½Π° Components
-
Themes/Effects
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΡΡΠ΅ΠΊΡΠΎΠ² - ΡΠ΅Π½ΠΈ ΠΈΠ»ΠΈ ΡΠ°Π·ΠΌΡΡΠΈΡ
ΠΠ°Π±ΠΎΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΡΠΈΠ»Π΅ΠΉ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° Components ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°Ρ
Π½Π°ΠΏΡΡΠΌΡΡ ΠΊΠ°ΠΊ Π² ΡΠΈΠ³ΠΌΠ°, ΡΠ°ΠΊ ΠΈ ΠΊΠΎΠ΄Π΅.
Effects ΠΈΠΌΠ΅Π΅Ρ 2 ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ - ΡΠ΅ΠΌΠ½Π°Ρ ΠΈ ΡΠ²Π΅ΡΠ»Π°Ρ. ΠΡΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ ΡΡΡΠ΅ΠΊΡΠΎΠ².
ΠΡΠ±ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΎΡΡΠ°Π·ΡΡΡΡ Π½Π° Components
-
Base/Anatomy
ΠΠ°Π·ΠΎΠ²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°Π½Π°ΡΠΎΠΌΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² - ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ², ΠΎΡΡΡΡΠΏΠΎΠ², Π±ΠΎΡΠ΄Π΅ΡΠΎΠ², ΡΠΊΡΡΠ³Π»Π΅Π½ΠΈΠΉ ΠΈ Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ.
ΠΡΠ±ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΎΡΡΠ°Π·ΡΡΡΡ Π½Π° Settings
-
Themes/Settings
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π°Π½Π°ΡΠΎΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ Components.
ΠΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π°Π½Π°ΡΠΎΠΌΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠ²ΠΎΠΉΡΡΠ² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΡΠ΅ΠΌΡ. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² Composition tokens, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π½ΠΎΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π°Π½Π°ΡΠΎΠΌΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΠΊΠ΅Π½Π° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ½Π½ΠΎΠ³ΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΡΡΠΎ Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ Π½Π° ΡΠ»ΠΎΠ΅ Components.
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠΎ Π°Π½Π°ΡΠΎΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ.
ΠΡΠ±ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΎΡΡΠ°Π·ΡΡΡΡ Π½Π° Composition token.
* 7.1 **Themes/Settings**
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π°Π½Π°ΡΠΎΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ Components.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΡΠΌΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ ΠΊΠ°ΠΊ Π² ΡΠΈΠ³ΠΌΠ°, ΡΠ°ΠΊ ΠΈ ΠΊΠΎΠ΄Π΅ Π² ΡΠ»ΡΡΠ°ΡΡ
ΠΊΠΎΠ³Π΄Π° Composition token ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π² ΠΊΠΎΠ΄Π΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΡΡΠ΅Ρ Π΄ΡΠΎΠΏΠ»ΠΈΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· 4 Π΅Π³ΠΎ ΡΡΠΎΡΠΎΠ½, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, Π³Π΄Π΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π΅Π³ΠΎ ΡΡΠΈΠ³Π³Π΅Ρ. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ Π·Π°Π΄Π°ΡΡ ΡΡΠΎΡ ΠΎΡΡΡΠ΅Ρ Π² ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ (Π° Π·Π½Π°ΡΠΈΡ, Π½Π΅ ΡΡΠΎΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Composition token).
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π² ΡΠΎΠΊΠ΅Π½Π΅.
ΠΡΠ±ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΎΡΡΠ°Π·ΡΡΡΡ Π½Π° Components ΠΈΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ Components.
-
Components/Composition tokens
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Components ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Components.
ΠΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ Π² ΡΠ΅Π±Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π°Π½Π°ΡΠΎΠΌΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π·Π°Π²ΠΈΡΡΡ ΠΎΡ Settings
ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° Components ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°Ρ
Π½Π°ΠΏΡΡΠΌΡΡ ΠΊΠ°ΠΊ Π² ΡΠΈΠ³ΠΌΠ°, ΡΠ°ΠΊ ΠΈ ΠΊΠΎΠ΄Π΅.
ΠΠ΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΡΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
.
ΠΡΠ±ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΎΡΡΠ°Π·ΡΡΡΡ Π½Π° Components.
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠΊΠ΅Π½Ρ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ
- ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ
@snack-uikit/figma-tokens Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ
- ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ ΡΠ°ΠΉΠ» Ρ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ ΠΈΡ
Π² Π½ΡΠΆΠ½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
var, simple-var ΠΈΠ»ΠΈ composite-var
@import '@snack-uikit/figma-tokens/build/scss/styles-theme-variables';
.wrapper {
color: $sys-primary-text-main-enabled;
opacity: simple-var($theme-variables, 'opacity', 'a032');
@include composite-var($sans-label-l);
}
import { styled } from '@linaria/react';
import { themeVars } from '@snack-uikit/figma-tokens';
export const Wrapper = styled.div`
color: ${themeVars.sys.primary.textMainEnabled};
${themeVars.sans.label.s};
`;
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠΊΠ΅Π½Ρ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ
uikit-a
- ΠΡΠΎΠ²Π΅ΡΡΡΠ΅, ΡΡΠΎ Π² uikit ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΠΏΠ°ΠΊΠ΅Ρ
@snack-uikit/figma-tokens Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° (Π½Π°ΠΏΡ.,
ButtonFilled.tsx) ΠΈ scss-ΡΠ°ΠΉΠ» Π΄Π»Ρ ΡΡΠΈΠ»Π΅ΠΉ (styles.module.scss), ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΡΡ Π² ΡΠ°ΠΉΠ» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°
- ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ ΡΠ°ΠΉΠ»Ρ Ρ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ Π²
styles.module.scss (ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΡΠ΅ - ΠΊΠ°ΠΊΠΈΠ΅ Π½ΡΠΆΠ½Ρ):
- ΡΠ°ΠΉΠ»Ρ Ρ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Ρ
@import '@snack-uikit/figma-tokens/build/scss/styles-theme-variables';
@import '@snack-uikit/figma-tokens/build/scss/components/styles-tokens-***';
- Π‘ΠΎΠ±Π΅ΡΠΈΡΠ΅ ΡΡΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΏΠΎ ΠΌΠ°ΠΊΠ΅ΡΠ°ΠΌ Π² figma, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Ρ ΡΠΎΠΊΠ΅Π½Ρ ΡΠ΅ΡΠ΅Π·
var, simple-var ΠΈΠ»ΠΈ composite-var
- Π² scss ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΌΠΈΠΊΡΠΈΠ½Ρ ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΡΠΎΠ±Ρ ΡΠ±ΠΈΡΠ°ΡΡ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΠΏΡΠΈΠΌΠ΅Ρ:
$sizes: s, m, l;
$variants: label-only, icon-only, label-icon;
@mixin button-anatomy-styles {
@each $size in $sizes {
&[data-size='#{$size}'] {
@each $variant in $variants {
&[data-variant='#{$variant}'] {
@include composite-var($button-filled, 'container', $size, $variant);
}
}
}
}
}
.button {
@include button-anatomy-styles;
}
- ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ scss-ΡΠ°ΠΉΠ» Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Ρ ΠΊΠ»Π°ΡΡΠ½Π΅ΠΉΠΌΠ°ΠΌΠΈ, ΠΈ Π΄Π°Π»Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
import styles from './styles.module.scss';
export type ButtonFilledProps = {
label?: string;
size?: Size;
variant?: Variant;
disabled?: boolean;
loading?: boolean;
};
export const ButtonFilled = ({ label, size, variant, disabled, loading }: ButtonFilledProps) => {
return (
<button
className={classNames.button}
data-size={size}
data-variant={variant}
data-disabled={disabled || undefined}
data-loading={loading || undefined}
>
<label className={styles.label}>{label}</label>
</button>
);
};
ΠΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ
-
Π‘Π±ΠΎΡΠΊΠ° json-ΠΎΠ² c ΠΏΠΎΠΌΠΎΡΡΡ token-transformer (Π² ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠΈΠΉ ΡΠΎΡΠΌΠ°Ρ Π΄Π»Ρ style-dictionary) (scripts/buildTokens)
- Π‘Π±ΠΎΡΠΊΠ° Π±Π°Π·ΠΎΠ²ΡΡ
ΠΈ ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠΎΠΊΠ΅Π½ΠΎΠ² (ΠΏΠ°ΠΏΠΊΠ°
build/tokens/themes)
- Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠ°ΠΉΠ»Ρ
tokens/$themes.json ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠ±ΠΎΡΠΊΠ° ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠ°ΠΉΠ»ΠΎΠ² (Π² ΡΠ°ΠΉΠ»Π΅ Π»Π΅ΠΆΠΈΡ 2 ΠΊΠΎΠ½ΡΠΈΠ³Π° Π΄Π»Ρ ΡΠ΅ΠΌ, Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Π½Π°Π±ΠΎΡΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ² Π½Π°Π΄ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ - ΡΠ²-Π²ΠΎ selectedTokenSets)
- token-transformer ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΠΎΠΊΠ΅Π½Ρ ΠΈ ΡΠΎΠΊΠ΅Π½Ρ ΡΠ΅ΠΌΡ Π² 2 ΠΎΠ±ΡΠΈΡ
ΡΠ°ΠΉΠ»Π° - Π΄Π»Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ dark ΠΈ light
- Π‘Π±ΠΎΡΠΊΠ° token-transformer-ΠΎΠΌ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΡΠ΅Π·ΠΎΠ»Π² Π²ΡΠ΅Ρ
Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ
- Π‘Π±ΠΎΡΠΊΠ° ΡΠΎΠΊΠ΅Π½ΠΎΠ² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² (ΠΏΠ°ΠΏΠΊΠ°
build/tokens/components)
- ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Ρ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ
- Π‘Π²ΡΠ·ΠΈ Ρ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ ΡΠ΅ΠΌ ΠΈ Π±Π°Π·ΠΎΠ²ΡΠΌΠΈ Π·Π΄Π΅ΡΡ ΡΠΆΠ΅ Π½Π΅ ΡΠ΅Π·ΠΎΠ»Π²ΡΡΡΡ, Ρ.ΠΊ. ΠΎΠ½ΠΈ Π½ΡΠΆΠ½Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΠΌ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ
- ΠΠ°ΠΆΠ½ΠΎ - Π² ΡΠΎΠΊΠ΅Π½Π°Ρ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΡΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ! ΠΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π±Π°Π·ΠΎΠ²ΡΠ΅/ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Ρ
-
Π‘Π±ΠΎΡΠΊΠ° css, scss ΠΈ ts ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ· json-ΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ style-dictionary (scripts/buildStyleFiles)
- Π‘Π±ΠΎΡΠΊΠ° ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠ°ΠΉΠ»ΠΎΠ²
- Π€Π°ΠΉΠ» Ρ ΡΠ΅ΠΌΠ°ΠΌΠΈ (
build/css/brand.module.css)
- Π€Π°ΠΉΠ»Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠΊΠ΅Π½Ρ ΡΠ΅ΠΌΡ:
- SCSS (
build/scss/styles-theme-variables.scss)
- TS (
build/ts/styles-theme-variables.ts)
- Π€Π°ΠΉΠ» Ρ ΡΠ΅ΠΌΠ°ΠΌΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π² ΠΊΠΎΡΠ½Π΅Π²ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, Π³Π΄Π΅ Π½ΡΠΆΠ½ΠΎ Π½Π°Π²Π΅ΡΠΈΡΡ ΠΊΠ»Π°ΡΡΡ Π½Π° ΡΠ°ΠΌΡΡ Π²Π΅ΡΡ
Π½ΡΡ ΠΎΠ±ΡΡΡΠΊΡ
- Π€Π°ΠΉΠ»Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ²
- Π‘Π±ΠΎΡΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² (ΠΏΠ°ΠΏΠΊΠ°
build/scss/components)
- ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ ΡΠ²ΠΎΠΉ scss, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΡΠ΅ ΡΠΎΠΊΠ΅Π½Ρ - ΠΎΠ½ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ
- ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ style-dictionary
- Transform - ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ΅ΡΡ Π΄Π»Ρ ΡΠΎΠΊΠ΅Π½ΠΎΠ² - ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΡΠΎΠΉ ΡΠΎΠΊΠ΅Π½ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π΅Π³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΡΠΎΡΠΌΠ°Ρ
- Filter - ΡΠΈΠ»ΡΡΡ Π΄Π»Ρ ΡΠΎΠΊΠ΅Π½ΠΎΠ² - ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΎΠΊΠ΅Π½ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true/false - Π±ΡΠ°ΡΡ ΠΈΠ»ΠΈ Π½Π΅ Π±ΡΠ°ΡΡ ΡΠΎΠΊΠ΅Π½ Π² ΠΈΡΠΎΠ³ΠΎΠ²ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΠΊΠ΅Π½ΠΎΠ²
- Format - ΡΠΎΡΠΌΠ°ΡΡ Π΄Π»Ρ ΡΠ°ΠΉΠ»ΠΎΠ² - ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΠΈΡΠΎΠ³ΠΎΠ²ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΠΊΠ΅Π½ΠΎΠ² ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΡΠ°ΠΉΠ»Π° (Ρ.Π΅. Π½Π° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ - ΡΡΠΎ ΠΊΠΎΠ½ΡΠ΅Π½Ρ scss ΡΠ°ΠΉΠ»Π°)
- ΠΠΎΠ½ΡΠΈΠ³ΠΈ Π΄Π»Ρ style-dictionary
scripts/buildStyleFiles/utils/getCSSModuleThemeConfig.ts - ΠΊΠΎΠ½ΡΠΈΠ³ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ css-ΡΠ°ΠΉΠ»Π°
scripts/buildStyleFiles/utils/getSCSSThemeVariablesConfig.ts - ΠΊΠΎΠ½ΡΠΈΠ³ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ scss-ΡΠ°ΠΉΠ»Π° Ρ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ
scripts/buildStyleFiles/utils/getTSThemeVariablesConfig.ts - ΠΊΠΎΠ½ΡΠΈΠ³ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ts-ΡΠ°ΠΉΠ»Π° Ρ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ
scripts/buildStyleFiles/utils/getComponentStylesConfig.ts - ΠΊΠΎΠ½ΡΠΈΠ³ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΡΡ
scss ΡΠ°ΠΉΠ»ΠΎΠ²
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠ΅ΠΌΡ
ΠΠΈΠ΄Π΅ΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΡΠΎΡΠΊΠ° figma-tokens
- ΠΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΠΌ Π½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Ρ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠΎΡΠΊ
- ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² Repository secrets ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
CI_NPM_TOKEN Ρ Access ΡΠΎΠΊΠ΅Π½ΠΎΠΌ ΠΈΠ· npmjs (Π΄Π»Ρ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°)
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΡΠΎΠ΅ΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ pnpm Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ°. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π² CI/CD Π½Π°ΡΡΡΠΎΠ΅Π½ pnpm.
- Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π²Π΅ΡΠΊΡ
brand ΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌ Π² ΠΊΠΎΡΠ΅Π½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΏΠ°ΠΏΠΊΠΈ github-settings-example
- ΠΠΎΠ΄ΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (
YOUR_PACKAGE_NAME, YOUR_BRAND, YOUR USERNAME, YOUR_USERNAME) Π² patch.package.json
- ΠΡΡΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ Π²
origin/brand
- ΠΠ΅Π½ΡΠ΅ΠΌ
default branch Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ
ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π½Π° brand
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ*
- ΠΠ΅ΡΠΊΠ°
brand ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ Π΄Π»Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π±ΡΠ΅Π½Π΄Π°.
- ΠΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ Π²
brand Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π· Pull Request
- ΠΠ°ΠΏΡΠ΅ΡΠΈΡΡ ΠΏΡΡΠΈ Π² Π²Π΅ΡΠΊΡ
master ΠΈ Π΄Π΅ΡΠΆΠ°ΡΡ ΡΡΡ Π²Π΅ΡΠΊΡ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΠΎΠΌ
- ΠΠ»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΡΠΊΠ° ΠΈ ΡΠ΅Π±Π΅ΠΉΠ·Π° Π²Π΅ΡΠΊΠΈ
brand ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΎΡΠΊΡΠ»ΠΎΡ Auto fork sync
- ΠΠ»Ρ Π²ΡΠΏΡΡΠΊΠ° ΠΏΡΠ΅Π²ΡΡ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΎΡΠΊΡΠ»ΠΎΡ
Release Preview