@taraskucherenko/scss-kit 0.1.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +21 -0
- package/src/atoms/_borders.scss +15 -0
- package/src/atoms/_flex-layout.scss +30 -0
- package/src/atoms/_grid-layout.scss +61 -0
- package/src/atoms/_index.scss +12 -0
- package/src/atoms/_misc.scss +64 -0
- package/src/atoms/_position.scss +79 -0
- package/src/atoms/_sizes.scss +28 -0
- package/src/atoms/_spacing.scss +1 -0
- package/src/atoms/_theme.scss +9 -0
- package/src/atoms/_typography.scss +64 -0
- package/src/base/_reset.scss +195 -0
- package/src/functions/_fun-colors.scss +41 -0
- package/src/functions/_fun-converters.scss +9 -0
- package/src/functions/_fun-helpers.scss +22 -0
- package/src/functions/_fun-images.scss +17 -0
- package/src/functions/_fun-sizes.scss +6 -0
- package/src/functions/_fun-units.scss +16 -0
- package/src/functions/_index.scss +6 -0
- package/src/main.scss +5 -0
- package/src/mixins/_index.scss +11 -0
- package/src/mixins/_mix-borders.scss +57 -0
- package/src/mixins/_mix-fonts.scss +12 -0
- package/src/mixins/_mix-grid.scss +31 -0
- package/src/mixins/_mix-media.scss +54 -0
- package/src/mixins/_mix-position.scss +66 -0
- package/src/mixins/_mix-pseudo.scss +57 -0
- package/src/mixins/_mix-sizes.scss +58 -0
- package/src/mixins/_mix-spacing.scss +18 -0
- package/src/mixins/_mix-states.scss +39 -0
- package/src/mixins/_mix-theme.scss +54 -0
- package/src/mixins/_mix-typography.scss +23 -0
- package/src/variables/_index.scss +3 -0
- package/src/variables/_var-colors.scss +94 -0
- package/src/variables/_var-fonts.scss +3 -0
- package/src/variables/_var-sizes.scss +8 -0
package/package.json
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@taraskucherenko/scss-kit",
|
|
3
|
+
"version": "0.1.38",
|
|
4
|
+
"description": "Foundational SCSS toolkit for scalable UI development",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://gitlab.com/teekeydev/scss-kit.git"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"dev": " sass --no-source-map --watch src/main.scss:build/main.css --style expanded",
|
|
11
|
+
"build": "sass --no-source-map src/main.scss:build/main.css --style compressed"
|
|
12
|
+
},
|
|
13
|
+
"author": "Taras Kucherenko",
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"main": "src/main.scss",
|
|
16
|
+
"sass": "src/main.scss",
|
|
17
|
+
"files": ["src"],
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"sass": "^1.97.2"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
@use '../mixins/mix-borders' as mb;
|
|
2
|
+
|
|
3
|
+
.round-circle, %round-circle {border-radius: 50%}
|
|
4
|
+
.round-full, %round-full {border-radius: 9999px}
|
|
5
|
+
.round-2, %round-2 {border-radius: 2px}
|
|
6
|
+
.round-4, %round-4 {border-radius: 4px}
|
|
7
|
+
.round-8, %round-8 {border-radius: 8px}
|
|
8
|
+
.round-12, %round-12 {border-radius: 12px}
|
|
9
|
+
.round-16, %round-16 {border-radius: 16px}
|
|
10
|
+
|
|
11
|
+
.divider-h, %divider-h {@include mb.divider-horizontal()}
|
|
12
|
+
.divider-v, %divider-v {@include mb.divider-vertical()}
|
|
13
|
+
|
|
14
|
+
.brd-transparent-1, %brd-transparent-1 {@include mb.border(_, transparent)}
|
|
15
|
+
.brd-current-1, %brd-current-1 {@include mb.border(_, currentColor)}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
.flex, %flex {display: flex}
|
|
2
|
+
.inline-flex, %inline-flex {display: inline-flex}
|
|
3
|
+
|
|
4
|
+
.flex-row-reverse, %flex-row-reverse {flex-direction: row-reverse}
|
|
5
|
+
.flex-col, %flex-col {@extend %flex; flex-direction: column}
|
|
6
|
+
.flex-col-reverse, %flex-col-reverse {flex-direction: column-reverse}
|
|
7
|
+
|
|
8
|
+
.jc-start, %jc-start {justify-content: flex-start}
|
|
9
|
+
.jc-center, %jc-center {justify-content: center}
|
|
10
|
+
.jc-end, %jc-end {justify-content: flex-end}
|
|
11
|
+
.jc-around, %jc-around {justify-content: space-around}
|
|
12
|
+
.jc-between, %jc-between {justify-content: space-between}
|
|
13
|
+
.jc-evenly, %jc-evenly {justify-content: space-evenly}
|
|
14
|
+
.jc-stretch, %jc-stretch {justify-content: stretch}
|
|
15
|
+
.jc-normal, %jc-normal {justify-content: normal}
|
|
16
|
+
|
|
17
|
+
.ai-start, %ai-start {align-items: flex-start}
|
|
18
|
+
.ai-center, %ai-center {align-items: center}
|
|
19
|
+
.ai-end, %ai-end {align-items: flex-end}
|
|
20
|
+
.ai-stretch, %ai-stretch {align-items: stretch}
|
|
21
|
+
.ai-baseline, %ai-baseline {align-items: baseline}
|
|
22
|
+
.ai-normal, %ai-normal {align-items: normal}
|
|
23
|
+
|
|
24
|
+
.ais-start, %ais-start {align-self: flex-start}
|
|
25
|
+
.ais-center, %ais-center {align-self: center}
|
|
26
|
+
.ais-end, %ais-end {align-self: flex-end}
|
|
27
|
+
.ais-stretch, %ais-stretch {align-self: stretch}
|
|
28
|
+
.ais-baseline, %ais-baseline {align-self: baseline}
|
|
29
|
+
.ais-auto, %ais-auto {align-self: auto}
|
|
30
|
+
.ais-normal, %ais-normal {align-self: normal}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
.grid, %grid {display: grid}
|
|
2
|
+
.inline-grid, %inline-grid {display: inline-grid}
|
|
3
|
+
|
|
4
|
+
.pli-start, %pli-start {place-items: start}
|
|
5
|
+
.pli-center, %pli-center {place-items: center}
|
|
6
|
+
.pli-end, %pli-end {place-items: end}
|
|
7
|
+
.pli-stretch, %pli-stretch {place-items: stretch}
|
|
8
|
+
.pli-baseline, %pli-baseline {place-items: baseline}
|
|
9
|
+
.pli-normal, %pli-normal {place-items: normal}
|
|
10
|
+
|
|
11
|
+
.plc-start, %plc-start {place-content: start}
|
|
12
|
+
.plc-center, %plc-center {place-content: center}
|
|
13
|
+
.plc-end, %plc-end {place-content: end}
|
|
14
|
+
.plc-between, %plc-between {place-content: space-between}
|
|
15
|
+
.plc-around, %plc-around {place-content: space-around}
|
|
16
|
+
.plc-evenly, %plc-evenly {place-content: space-evenly}
|
|
17
|
+
.plc-stretch, %plc-stretch {place-content: stretch}
|
|
18
|
+
|
|
19
|
+
.ji-start, %ji-start {justify-items: start}
|
|
20
|
+
.ji-center, %ji-center {justify-items: center}
|
|
21
|
+
.ji-end, %ji-end {justify-items: end}
|
|
22
|
+
.ji-stretch, %ji-stretch {justify-items: stretch}
|
|
23
|
+
.ji-baseline, %ji-baseline {justify-items: baseline}
|
|
24
|
+
.ji-normal, %ji-normal {justify-items: normal}
|
|
25
|
+
|
|
26
|
+
.grid-flow-row, %grid-flow-row {grid-auto-flow: row}
|
|
27
|
+
.grid-flow-col, %grid-flow-col {grid-auto-flow: column}
|
|
28
|
+
.grid-flow-dense, %grid-flow-dense {grid-auto-flow: dense}
|
|
29
|
+
.grid-flow-row-dense, %grid-flow-row-dense {grid-auto-flow: row dense}
|
|
30
|
+
.grid-flow-col-dense, %grid-flow-col-dense {grid-auto-flow: column dense}
|
|
31
|
+
|
|
32
|
+
/* TODO: move it to the project */
|
|
33
|
+
.grid-cols-2, %grid-cols-2 {grid-template-columns: repeat(2, 1fr)}
|
|
34
|
+
.grid-cols-3, %grid-cols-3 {grid-template-columns: repeat(3, 1fr)}
|
|
35
|
+
.grid-cols-4, %grid-cols-4 {grid-template-columns: repeat(4, 1fr)}
|
|
36
|
+
.grid-cols-6, %grid-cols-6 {grid-template-columns: repeat(6, 1fr)}
|
|
37
|
+
.grid-cols-12, %grid-cols-12 {grid-template-columns: repeat(12, 1fr)}
|
|
38
|
+
|
|
39
|
+
.grid-rows-2, %grid-rows-2 {grid-template-rows: repeat(2, 1fr)}
|
|
40
|
+
.grid-rows-3, %grid-rows-3 {grid-template-rows: repeat(3, 1fr)}
|
|
41
|
+
.grid-rows-4, %grid-rows-4 {grid-template-rows: repeat(4, 1fr)}
|
|
42
|
+
|
|
43
|
+
.col-span-1, %col-span-1 {grid-column: span 1}
|
|
44
|
+
.col-span-2, %col-span-2 {grid-column: span 2}
|
|
45
|
+
.col-span-3, %col-span-3 {grid-column: span 3}
|
|
46
|
+
.col-span-4, %col-span-4 {grid-column: span 4}
|
|
47
|
+
.col-span-6, %col-span-6 {grid-column: span 6}
|
|
48
|
+
.col-span-12, %col-span-12 {grid-column: span 12}
|
|
49
|
+
.col-span-full, %col-span-full {grid-column: 1 / -1}
|
|
50
|
+
|
|
51
|
+
.row-span-1, %row-span-1 {grid-row: span 1}
|
|
52
|
+
.row-span-2, %row-span-2 {grid-row: span 2}
|
|
53
|
+
.row-span-3, %row-span-3 {grid-row: span 3}
|
|
54
|
+
.row-span-4, %row-span-4 {grid-row: span 4}
|
|
55
|
+
.row-span-full, %row-span-full {grid-row: 1 / -1}
|
|
56
|
+
|
|
57
|
+
// Responsive grid with auto-fill (items wrap automatically)
|
|
58
|
+
.grid-auto-fill, %grid-auto-fill {grid-template-columns: repeat(auto-fill, minmax(250px, 1fr))}
|
|
59
|
+
|
|
60
|
+
// Responsive grid with auto-fit (items stretch to fill space)
|
|
61
|
+
.grid-auto-fit, %grid-auto-fit {grid-template-columns: repeat(auto-fit, minmax(250px, 1fr))}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
@forward 'borders';
|
|
2
|
+
@forward 'flex-layout';
|
|
3
|
+
@forward 'grid-layout';
|
|
4
|
+
@forward 'misc';
|
|
5
|
+
@forward 'position';
|
|
6
|
+
@forward 'sizes';
|
|
7
|
+
@forward 'spacing';
|
|
8
|
+
@forward 'theme';
|
|
9
|
+
@forward 'typography';
|
|
10
|
+
|
|
11
|
+
.block, %block {display: block}
|
|
12
|
+
.hidden, %hidden {display: none}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
.anim, %anim {transition: all 0.2s ease-in-out}
|
|
2
|
+
|
|
3
|
+
.bg-pos-start, %bg-pos-start {background-position: 0}
|
|
4
|
+
.bg-pos-cen, %bg-pos-cen {background-position: 50%}
|
|
5
|
+
.bg-no-repeat, %bg-no-repeat {background-repeat: no-repeat}
|
|
6
|
+
.bg-size-cover, %bg-size-cover {background-size: cover}
|
|
7
|
+
.bg-size-100p, %bg-size-100p {background-size: 100%}
|
|
8
|
+
.bg-cover, %bg-cover {@extend %bg-no-repeat, %bg-pos-cen; background-size: cover}
|
|
9
|
+
.bg-contain, %bg-contain {@extend %bg-no-repeat; background-size: contain}
|
|
10
|
+
.bg-cen-100p, %bg-cen-100p {@extend %bg-pos-cen, %bg-no-repeat, %bg-size-100p}
|
|
11
|
+
|
|
12
|
+
// <img>-specific properties
|
|
13
|
+
.img-con, %img-con {object-fit: contain}
|
|
14
|
+
.img-cov, %img-cov {object-fit: cover}
|
|
15
|
+
.img-cen, %img-cen {object-position: center}
|
|
16
|
+
|
|
17
|
+
.cur-auto, %cur-auto {cursor: auto}
|
|
18
|
+
.cur-move, %cur-move {cursor: move}
|
|
19
|
+
.cur-text, %cur-text {cursor: text}
|
|
20
|
+
.cur-wait, %cur-wait {cursor: wait}
|
|
21
|
+
.cur-help, %cur-help {cursor: help}
|
|
22
|
+
.cur-def, %cur-def {cursor: default}
|
|
23
|
+
.cur-point, %cur-point {cursor: pointer}
|
|
24
|
+
.cur-zoom, %cur-zoom {cursor: zoom-in}
|
|
25
|
+
.cur-zoom-out, %cur-zoom-out {cursor: zoom-out}
|
|
26
|
+
.cur-pro, %cur-pro {cursor: progress}
|
|
27
|
+
.cur-cross, %cur-cross {cursor: crosshair}
|
|
28
|
+
.cur-not, %cur-not {cursor: not-allowed}
|
|
29
|
+
|
|
30
|
+
.pe-none, %pe-none {pointer-events: none}
|
|
31
|
+
.pe-auto, %pe-auto {pointer-events: auto}
|
|
32
|
+
|
|
33
|
+
.opacity-0, %opacity-0 {opacity: 0}
|
|
34
|
+
.opacity-0x35, %opacity-0x35 {opacity: 0.35}
|
|
35
|
+
.opacity-0x5, %opacity-0x5 {opacity: 0.5}
|
|
36
|
+
.opacity-0x75, %opacity-0x75 {opacity: 0.75}
|
|
37
|
+
.opacity-0x95, %opacity-0x95 {opacity: 0.95}
|
|
38
|
+
.opacity-1, %opacity-1 {opacity: 1}
|
|
39
|
+
|
|
40
|
+
.over-hidden, %over-hidden {overflow: hidden}
|
|
41
|
+
.over-auto, %over-auto {overflow: auto}
|
|
42
|
+
.over-visible, %over-visible {overflow: visible}
|
|
43
|
+
.over-x-auto, %over-x-auto {overflow-x: auto; @extend %over-y-hidden}
|
|
44
|
+
.over-x-scroll, %over-x-scroll {overflow-x: scroll;@extend %over-y-hidden}
|
|
45
|
+
.over-x-hidden, %over-x-hidden {overflow-x: hidden}
|
|
46
|
+
.over-y-auto, %over-y-auto {overflow-y: auto; @extend %over-x-hidden}
|
|
47
|
+
.over-y-scroll, %over-y-scroll {overflow-y: scroll;@extend %over-x-hidden}
|
|
48
|
+
.over-y-hidden, %over-y-hidden {overflow-y: hidden}
|
|
49
|
+
|
|
50
|
+
.vis-hidden, %vis-hidden {visibility: hidden}
|
|
51
|
+
.vis-visible, %vis-visible {visibility: visible}
|
|
52
|
+
.vis-collapse, %vis-collapse {visibility: collapse}
|
|
53
|
+
|
|
54
|
+
.reflection-v, %reflection-v {transform: scale(1, -1)}
|
|
55
|
+
.reflection-h, %reflection-h {transform: scale(-1, 1)}
|
|
56
|
+
.reflection-vh, %reflection-vh {transform: scale(-1, -1)}
|
|
57
|
+
|
|
58
|
+
.rotate--45, %rotate--45 {transform: rotate(-45deg)}
|
|
59
|
+
.rotate--90, %rotate--90 {transform: rotate(-90deg)}
|
|
60
|
+
|
|
61
|
+
.aspect-square, %aspect-square {aspect-ratio: 1/1}
|
|
62
|
+
.aspect-4x3, %aspect-4x3 {aspect-ratio: 4/3}
|
|
63
|
+
.aspect-16x9, %aspect-16x9 {aspect-ratio: 16/9}
|
|
64
|
+
.aspect-21x9, %aspect-21x9 {aspect-ratio: 21/9}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
@use '../mixins/mix-position' as mp;
|
|
2
|
+
|
|
3
|
+
.block, %block {display: block}
|
|
4
|
+
.inl-block, %inl-block {display: inline-block}
|
|
5
|
+
.hidden, %hidden {display: none}
|
|
6
|
+
.hidden-imp, %hidden-imp {display: none !important}
|
|
7
|
+
|
|
8
|
+
.static, %static {position: static}
|
|
9
|
+
.relative, %relative {position: relative}
|
|
10
|
+
.absolute, %absolute {position: absolute}
|
|
11
|
+
.fixed, %fixed {position: fixed}
|
|
12
|
+
.sticky, %sticky {position: -webkit-sticky;position: sticky}
|
|
13
|
+
|
|
14
|
+
%top-0 {top: 0}
|
|
15
|
+
%rig-0 {right: 0}
|
|
16
|
+
%bot-0 {bottom: 0}
|
|
17
|
+
%lef-0 {left: 0}
|
|
18
|
+
%top-100p {top: 100%}
|
|
19
|
+
%rig-100p {right: 100%}
|
|
20
|
+
%bot-100p {bottom: 100%}
|
|
21
|
+
%lef-100p {left: 100%}
|
|
22
|
+
|
|
23
|
+
%fit-hor {@extend %rig-0, %lef-0}
|
|
24
|
+
%fit-ver {@extend %top-0, %bot-0}
|
|
25
|
+
%fit {@extend %fit-hor, %fit-ver}
|
|
26
|
+
|
|
27
|
+
%top-rig-0 {@extend %top-0, %rig-0}
|
|
28
|
+
%top-lef-0 {@extend %top-0, %lef-0}
|
|
29
|
+
%bot-rig-0 {@extend %bot-0, %rig-0}
|
|
30
|
+
%bot-lef-0 {@extend %bot-0, %lef-0}
|
|
31
|
+
|
|
32
|
+
.abs-t, %abs-t {@extend %absolute, %top-0}
|
|
33
|
+
.abs-t-100p, %abs-t-100p {@extend %absolute, %top-100p}
|
|
34
|
+
.abs-t-l, %abs-t-l {@extend %absolute, %top-lef-0}
|
|
35
|
+
.abs-t-r, %abs-t-r {@extend %absolute, %top-rig-0}
|
|
36
|
+
.abs-b, %abs-b {@extend %absolute, %bot-0}
|
|
37
|
+
.abs-b-100p, %abs-b-100p {@extend %absolute, %bot-100p}
|
|
38
|
+
.abs-b-l, %abs-b-l {@extend %absolute, %bot-lef-0}
|
|
39
|
+
.abs-b-r, %abs-b-r {@extend %absolute, %bot-rig-0}
|
|
40
|
+
.abs-l, %abs-l {@extend %absolute, %lef-0}
|
|
41
|
+
.abs-r, %abs-r {@extend %absolute, %rig-0}
|
|
42
|
+
.abs-fit, %abs-fit {@extend %absolute, %fit}
|
|
43
|
+
.abs-center, %abs-center {@extend %absolute;@include mp.pos-center}
|
|
44
|
+
.abs-center-x, %abs-center-x {@extend %absolute;@include mp.pos-center-x}
|
|
45
|
+
.abs-center-y, %abs-center-y {@extend %absolute;@include mp.pos-center-y}
|
|
46
|
+
|
|
47
|
+
.fix-t, %fix-t {@extend %fixed, %top-0}
|
|
48
|
+
.fix-t-l, %fix-t-l {@extend %fixed, %top-lef-0}
|
|
49
|
+
.fix-t-r, %fix-t-r {@extend %fixed, %top-rig-0}
|
|
50
|
+
.fix-b, %fix-b {@extend %fixed, %bot-0}
|
|
51
|
+
.fix-b-l, %fix-b-l {@extend %fixed, %bot-lef-0}
|
|
52
|
+
.fix-b-r, %fix-b-r {@extend %fixed, %bot-rig-0}
|
|
53
|
+
.fix-l, %fix-l {@extend %fixed, %lef-0}
|
|
54
|
+
.fix-r, %fix-r {@extend %fixed, %rig-0}
|
|
55
|
+
.fix-fit, %fix-fit {@extend %fixed, %fit}
|
|
56
|
+
.fix-center, %fix-center {@extend %fixed;@include mp.pos-center}
|
|
57
|
+
.fix-center-x, %fix-center-x {@extend %fixed;@include mp.pos-center-x}
|
|
58
|
+
.fix-center-y, %fix-center-y {@extend %fixed;@include mp.pos-center-y}
|
|
59
|
+
|
|
60
|
+
.z-ind-background, %z-ind-background {z-index: -2}
|
|
61
|
+
.z-ind-backward, %z-ind-backward {z-index: -1}
|
|
62
|
+
.z-ind-0, %z-ind-0 {z-index: 0}
|
|
63
|
+
.z-ind-1, %z-ind-1 {z-index: 1}
|
|
64
|
+
.z-ind-2, %z-ind-2 {z-index: 2}
|
|
65
|
+
.z-ind-3, %z-ind-3 {z-index: 3}
|
|
66
|
+
.z-ind-select, %z-ind-select {z-index: var(--z-ind-select)} // 50
|
|
67
|
+
.z-ind-tooltip, %z-ind-tooltip {z-index: 75}
|
|
68
|
+
.z-ind-high, %z-ind-high {z-index: 100}
|
|
69
|
+
.z-ind-overlay, %z-ind-overlay {z-index: 500}
|
|
70
|
+
.z-ind-modal, %z-ind-modal {z-index: 2000}
|
|
71
|
+
|
|
72
|
+
// TODO: Implement Details --> summary construct
|
|
73
|
+
%hidden-show {
|
|
74
|
+
&:hover {
|
|
75
|
+
z-index: calc(var(--z-ind-select) + 1);
|
|
76
|
+
|
|
77
|
+
%hidden {display: block}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
@use '../mixins/mix-sizes' as ms;
|
|
2
|
+
|
|
3
|
+
.maw-content, %maw-content {max-width: var(--max-width)}
|
|
4
|
+
.maw-full, %maw-full {max-width: 100%}
|
|
5
|
+
|
|
6
|
+
.miw-narrow, %miw-narrow {min-width: var(--min-width)}
|
|
7
|
+
.miw-full, %miw-full {min-width: 100%}
|
|
8
|
+
|
|
9
|
+
.w-none, %w-none {width: 0}
|
|
10
|
+
.w-full, %w-full {width: 100%}
|
|
11
|
+
.w-auto, %w-auto {width: auto}
|
|
12
|
+
.w-narrow, %w-narrow {width: var(--min-width)}
|
|
13
|
+
.w-100vw, %w-100vw {width: 100vw}
|
|
14
|
+
|
|
15
|
+
.mah-full, %mah-full {max-height: 100%}
|
|
16
|
+
|
|
17
|
+
.h-none, %h-none {height: 0}
|
|
18
|
+
.h-full, %h-full {height: 100%}
|
|
19
|
+
.h-auto, %h-auto {height: auto}
|
|
20
|
+
|
|
21
|
+
.mih-100vh, %mih-100vh {@include ms.mih-vh(100)}
|
|
22
|
+
.mah-100vh, %mah-100vh {@include ms.mah-vh(100)}
|
|
23
|
+
.h-100vh, %h-100vh {@include ms.h-vh(100)}
|
|
24
|
+
|
|
25
|
+
.full-sz-max, %full-sz-max {@extend %maw-full, %mah-full}
|
|
26
|
+
.full-sz-auto, %full-sz-auto {@extend %w-auto, %h-auto}
|
|
27
|
+
.full-sz, %full-sz {@extend %w-full, %h-full}
|
|
28
|
+
.full-sz-0, %full-sz-0 {@extend %w-none, %h-none}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.cen-by-mar, %cen-by-mar {margin-right: auto;margin-left: auto}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
.bg-transparent, %bg-transparent {background-color: transparent}
|
|
2
|
+
.bg-current, %bg-current {background-color: currentColor}
|
|
3
|
+
.bg-black, %bg-black {background-color: var(--col-black)}
|
|
4
|
+
.bg-white, %bg-white {background-color: var(--col-white)}
|
|
5
|
+
|
|
6
|
+
.fg-current, %fg-current {color: currentColor}
|
|
7
|
+
.fg-inherit, %fg-inherit {color: inherit}
|
|
8
|
+
.fg-black, %fg-black {color: var(--col-black)}
|
|
9
|
+
.fg-white, %fg-white {color: var(--col-white)}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
.font-none, %font-none {font-size: 0}
|
|
2
|
+
|
|
3
|
+
.line-h-0, %line-h-0 {line-height: 0}
|
|
4
|
+
.line-h-0x75, %line-h-0x75 {line-height: 0.75}
|
|
5
|
+
.line-h-1, %line-h-1 {line-height: 1}
|
|
6
|
+
.line-h-1x2, %line-h-1x2 {line-height: 1.2}
|
|
7
|
+
.line-h-1x3, %line-h-1x3 {line-height: 1.3}
|
|
8
|
+
.line-h-1x4, %line-h-1x4 {line-height: 1.4}
|
|
9
|
+
.line-h-1x5, %line-h-1x5 {line-height: 1.5}
|
|
10
|
+
.line-h-1x6, %line-h-1x6 {line-height: 1.6}
|
|
11
|
+
|
|
12
|
+
.fw-thin, %fw-thin {font-weight: 100}
|
|
13
|
+
.fw-extra-light, %fw-extra-light {font-weight: 200}
|
|
14
|
+
.fw-light, %fw-light {font-weight: 300}
|
|
15
|
+
.fw-regular, %fw-regular {font-weight: 400}
|
|
16
|
+
.fw-medium, %fw-medium {font-weight: 500}
|
|
17
|
+
.fw-semi-bold, %fw-semi-bold {font-weight: 600}
|
|
18
|
+
.fw-bold, %fw-bold {font-weight: 700}
|
|
19
|
+
.fw-extra-bold, %fw-extra-bold {font-weight: 800}
|
|
20
|
+
.fw-black, %fw-black {font-weight: 900}
|
|
21
|
+
|
|
22
|
+
.text-start, %text-start {text-align: start}
|
|
23
|
+
.text-end, %text-end {text-align: end}
|
|
24
|
+
.text-left, %text-left {text-align: left}
|
|
25
|
+
.text-center, %text-center {text-align: center}
|
|
26
|
+
.text-right, %text-right {text-align: right}
|
|
27
|
+
.text-justify, %text-justify {text-align: justify}
|
|
28
|
+
|
|
29
|
+
.font-normal, %font-normal {font-style: normal}
|
|
30
|
+
.font-italic, %font-italic {font-style: italic}
|
|
31
|
+
.font-oblique, %font-oblique {font-style: oblique}
|
|
32
|
+
|
|
33
|
+
.dec-none, %dec-none {text-decoration: none}
|
|
34
|
+
.dec-over, %dec-over {text-decoration: overline}
|
|
35
|
+
.dec-under, %dec-under {text-decoration: underline}
|
|
36
|
+
.dec-strike, %dec-strike {text-decoration: line-through}
|
|
37
|
+
|
|
38
|
+
.dec-und-hov-none, %dec-und-hov-none {
|
|
39
|
+
@extend %dec-under;
|
|
40
|
+
&:hover {@extend %dec-none}
|
|
41
|
+
}
|
|
42
|
+
.dec-none-hov-und, %dec-none-hov-und {
|
|
43
|
+
@extend %dec-none;
|
|
44
|
+
&:hover {@extend %dec-under}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.trans-none, %trans-none {text-transform: none}
|
|
48
|
+
.trans-upper, %trans-upper {text-transform: uppercase}
|
|
49
|
+
.trans-lower, %trans-lower {text-transform: lowercase}
|
|
50
|
+
.trans-cap, %trans-cap {text-transform: capitalize}
|
|
51
|
+
|
|
52
|
+
.ow-word, %ow-word {overflow-wrap: break-word}
|
|
53
|
+
.ow-any, %ow-any {overflow-wrap: anywhere}
|
|
54
|
+
|
|
55
|
+
.wb-all, %wb-all {word-break: break-all}
|
|
56
|
+
.wb-word, %wb-word {word-break: break-word}
|
|
57
|
+
.wb-keep, %wb-keep {word-break: keep-all}
|
|
58
|
+
|
|
59
|
+
.ws-normal, %ws-normal {white-space: normal}
|
|
60
|
+
.ws-nowrap, %ws-nowrap {white-space: nowrap}
|
|
61
|
+
.ws-pre, %ws-pre {white-space: pre}
|
|
62
|
+
.ws-pre-wrap, %ws-pre-wrap {white-space: pre-wrap}
|
|
63
|
+
.ws-pre-line, %ws-pre-line {white-space: pre-line}
|
|
64
|
+
.ws-break, %ws-break {white-space: break-spaces}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
@use '../variables' as var;
|
|
2
|
+
@use '../mixins' as mix;
|
|
3
|
+
|
|
4
|
+
:root {
|
|
5
|
+
--col-white: #FFFFFF;
|
|
6
|
+
--col-black: #000000;
|
|
7
|
+
|
|
8
|
+
--max-width: #{var.$page-width-max + px};
|
|
9
|
+
--min-width: #{var.$page-width-min + px};
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
*, ::before, ::after {
|
|
13
|
+
box-sizing: border-box;
|
|
14
|
+
margin: 0;
|
|
15
|
+
padding: 0;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
html {
|
|
19
|
+
font-size: 16px;
|
|
20
|
+
line-height: 1.2;
|
|
21
|
+
min-width: var(--min-width);
|
|
22
|
+
width: 100%;
|
|
23
|
+
height: 100%;
|
|
24
|
+
-webkit-text-size-adjust: 100%;
|
|
25
|
+
tab-size: 4;
|
|
26
|
+
|
|
27
|
+
@include mix.dir-rtl {
|
|
28
|
+
direction: rtl;
|
|
29
|
+
text-align: right;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
body {
|
|
34
|
+
width: 100%;
|
|
35
|
+
height: 100%;
|
|
36
|
+
font-synthesis: none;
|
|
37
|
+
text-rendering: optimizeLegibility;
|
|
38
|
+
-webkit-font-smoothing: antialiased;
|
|
39
|
+
-moz-osx-font-smoothing: grayscale;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
h1, h2, h3, h4, h5, h6 {
|
|
43
|
+
font-weight: 700;
|
|
44
|
+
font-size: inherit;
|
|
45
|
+
line-height: 1.2;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
b, strong, optgroup {font-weight: 700}
|
|
49
|
+
|
|
50
|
+
dfn, em, i {font-style: italic}
|
|
51
|
+
|
|
52
|
+
small {font-size: 80%}
|
|
53
|
+
|
|
54
|
+
sub, sup {
|
|
55
|
+
font-size: 80%;
|
|
56
|
+
vertical-align: baseline;
|
|
57
|
+
line-height: 0;
|
|
58
|
+
position: relative;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
sup {top: -0.25em}
|
|
62
|
+
sub {bottom: -0.25em}
|
|
63
|
+
|
|
64
|
+
code, kbd, pre, samp {
|
|
65
|
+
font-family: monospace;
|
|
66
|
+
font-size: 1em;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
pre {overflow: auto}
|
|
70
|
+
|
|
71
|
+
mark {
|
|
72
|
+
background-color: #FFFF00;
|
|
73
|
+
color: var(--col-black);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
q::before, q::after {content: ''}
|
|
77
|
+
|
|
78
|
+
img, video, svg, canvas {
|
|
79
|
+
max-width: 100%;
|
|
80
|
+
height: auto;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
svg:not([fill]) {fill: currentColor}
|
|
84
|
+
|
|
85
|
+
audio {display: inline-block}
|
|
86
|
+
|
|
87
|
+
audio:not([controls]) {
|
|
88
|
+
display: none;
|
|
89
|
+
height: 0;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
iframe, abbr, acronym, img {
|
|
93
|
+
border: 0;
|
|
94
|
+
outline: 0;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
button, input, optgroup, select, textarea {
|
|
98
|
+
color: inherit;
|
|
99
|
+
font: inherit;
|
|
100
|
+
margin: 0;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
button, input {overflow: visible}
|
|
104
|
+
button, select {text-transform: none}
|
|
105
|
+
input {line-height: 1}
|
|
106
|
+
textarea {overflow: auto; resize: none}
|
|
107
|
+
|
|
108
|
+
input, input:focus,
|
|
109
|
+
button, textarea,
|
|
110
|
+
select, a:focus {
|
|
111
|
+
outline: 0;
|
|
112
|
+
border: 0;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
button,
|
|
116
|
+
input[type='button'],
|
|
117
|
+
input[type='reset'],
|
|
118
|
+
input[type='submit'] {
|
|
119
|
+
cursor: pointer;
|
|
120
|
+
-webkit-appearance: button;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
button:disabled,
|
|
124
|
+
input:disabled,
|
|
125
|
+
select:disabled,
|
|
126
|
+
textarea:disabled {
|
|
127
|
+
cursor: no-drop;
|
|
128
|
+
opacity: 0.75;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
:focus-visible {
|
|
132
|
+
outline: 2px solid #0096CC;
|
|
133
|
+
outline-offset: 2px;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
:focus:not(:focus-visible) {outline: none}
|
|
137
|
+
|
|
138
|
+
input[type='number']::-webkit-inner-spin-button,
|
|
139
|
+
input[type='number']::-webkit-outer-spin-button {height: auto}
|
|
140
|
+
|
|
141
|
+
input[type='search'] {
|
|
142
|
+
-webkit-appearance: textfield;
|
|
143
|
+
outline-offset: -2px;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
input[type='search']::-webkit-search-cancel-button,
|
|
147
|
+
input[type='search']::-webkit-search-decoration {-webkit-appearance: none}
|
|
148
|
+
|
|
149
|
+
::-webkit-file-upload-button {
|
|
150
|
+
-webkit-appearance: button;
|
|
151
|
+
color: inherit;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
figure {margin: 0}
|
|
155
|
+
|
|
156
|
+
fieldset {
|
|
157
|
+
border: 1px solid gray;
|
|
158
|
+
padding: 0.25rem 0.75rem;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
legend {
|
|
162
|
+
border: 0;
|
|
163
|
+
color: inherit;
|
|
164
|
+
display: table;
|
|
165
|
+
word-spacing: normal;
|
|
166
|
+
max-width: 100%;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
hr {
|
|
170
|
+
box-sizing: content-box;
|
|
171
|
+
height: 0;
|
|
172
|
+
overflow: visible;
|
|
173
|
+
border: 0;
|
|
174
|
+
border-top: 1px solid currentColor;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
a {
|
|
178
|
+
cursor: pointer;
|
|
179
|
+
text-decoration: none;
|
|
180
|
+
color: inherit;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
ul, ol {
|
|
184
|
+
list-style: none;
|
|
185
|
+
margin: 0;
|
|
186
|
+
padding: 0;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
table {
|
|
190
|
+
border-collapse: collapse;
|
|
191
|
+
border-spacing: 0;
|
|
192
|
+
table-layout: fixed;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
[hidden], template {display: none}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
@use 'sass:string';
|
|
2
|
+
|
|
3
|
+
/// Generates oklch() color string
|
|
4
|
+
/// @param {Number} $l - Lightness (0-100% or 0-1)
|
|
5
|
+
/// @param {Number} $c - Chroma (0-0.4 typical range)
|
|
6
|
+
/// @param {Number} $h - Hue (0-360)
|
|
7
|
+
/// @param {Number} $alpha - Alpha (0-1)
|
|
8
|
+
/// @return {String} oklch() CSS string
|
|
9
|
+
@function oklch($l, $c, $h, $alpha: 1) {
|
|
10
|
+
// Нормалізуємо lightness до % якщо потрібно
|
|
11
|
+
@if $l > 1 {
|
|
12
|
+
$l: $l * 1%;
|
|
13
|
+
} @else if unitless($l) {
|
|
14
|
+
$l: $l * 100%;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
@if $alpha == 1 {
|
|
18
|
+
@return string.unquote('oklch(#{$l} #{$c} #{$h})');
|
|
19
|
+
} @else {
|
|
20
|
+
@return string.unquote('oklch(#{$l} #{$c} #{$h} / #{$alpha})');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/// Generates oklab() color string
|
|
25
|
+
/// @param {Number} $l - Lightness (0-100% or 0-1)
|
|
26
|
+
/// @param {Number} $a - a-axis (-0.4 to 0.4)
|
|
27
|
+
/// @param {Number} $b - b-axis (-0.4 to 0.4)
|
|
28
|
+
/// @param {Number} $alpha - Alpha (0-1)
|
|
29
|
+
@function oklab($l, $a, $b, $alpha: 1) {
|
|
30
|
+
@if $l > 1 {
|
|
31
|
+
$l: $l * 1%;
|
|
32
|
+
} @else if unitless($l) {
|
|
33
|
+
$l: $l * 100%;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@if $alpha == 1 {
|
|
37
|
+
@return string.unquote('oklab(#{$l} #{$a} #{$b})');
|
|
38
|
+
} @else {
|
|
39
|
+
@return string.unquote('oklab(#{$l} #{$a} #{$b} / #{$alpha})');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
@use 'sass:string';
|
|
2
|
+
|
|
3
|
+
/// Returns !important flag or null
|
|
4
|
+
/// @param {Boolean} $val - Whether to add !important
|
|
5
|
+
/// @return {String|Null} !important or null
|
|
6
|
+
@function important($val) {
|
|
7
|
+
@if $val {
|
|
8
|
+
@return string.unquote('!important');
|
|
9
|
+
} @else {
|
|
10
|
+
@return null;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/// Converts numeric values to CSS class-safe strings
|
|
15
|
+
/// Example: 1.5 → "1x5", 2.25 → "2x25"
|
|
16
|
+
/// @param {Number} $val - Numeric value
|
|
17
|
+
/// @param {String} $separator - Separator character (default: 'x')
|
|
18
|
+
/// @return {String} Class-safe string
|
|
19
|
+
@function num-to-class($val, $separator: 'x') {
|
|
20
|
+
$str: inspect($val);
|
|
21
|
+
@return string.replace($str, '.', $separator);
|
|
22
|
+
}
|