balean-theme 0.0.3 → 0.1.0

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.
@@ -0,0 +1,394 @@
1
+ @use "balean/variables" as vars;
2
+
3
+ /* Header */
4
+ .header {
5
+ .header__inner {
6
+ position: relative;
7
+ display: flex;
8
+ justify-content: space-between;
9
+ align-items: center;
10
+ flex-wrap: wrap;
11
+ padding: 32px vars.$base-spacing-unit 0;
12
+ }
13
+
14
+ @media (max-width: vars.$desktop) {
15
+ .header__inner {
16
+ padding: vars.$base-spacing-unit vars.$base-spacing-unit 0;
17
+ }
18
+ }
19
+ }
20
+
21
+ /* Logo */
22
+ .logo__link {
23
+ font-family: vars.$heading-font-family;
24
+ font-size: 40px;
25
+ line-height: 1;
26
+ font-weight: 700;
27
+ text-decoration: none;
28
+ transition: vars.$global-transition;
29
+ }
30
+
31
+ .logo__image,
32
+ .logo__image__dark {
33
+ max-height: 50px;
34
+ }
35
+
36
+ .logo__image__dark {
37
+ display: none;
38
+ }
39
+
40
+ .dark-mode {
41
+ .logo__image {
42
+ display: none;
43
+ }
44
+
45
+ .logo__image__dark {
46
+ display: inline-block;
47
+ }
48
+ }
49
+
50
+ .main-nav {
51
+ display: flex;
52
+ flex: 1 0;
53
+ align-items: center;
54
+
55
+ @media (max-width: vars.$desktop) {
56
+ position: absolute;
57
+ top: 68px;
58
+ right: vars.$base-spacing-unit;
59
+ z-index: -1;
60
+ display: block;
61
+ min-width: 160px;
62
+ padding: 20px 24px;
63
+ border-radius: 16px;
64
+ transform: translate3d(0, 10px, 0);
65
+ opacity: 0;
66
+ visibility: hidden;
67
+ background-color: var(--background-color);
68
+ box-shadow: 0 8px 40px -8px rgba(0, 0, 0, .22);
69
+ transition: all .2s ease;
70
+
71
+ &.is-visible {
72
+ z-index: 100;
73
+ opacity: 1;
74
+ visibility: visible;
75
+ transform: translate3d(0, 0, 0);
76
+ }
77
+
78
+ .nav__list {
79
+ flex-direction: column;
80
+ width: 100%;
81
+
82
+ .nav__item {
83
+ display: block;
84
+ width: 100%;
85
+ margin: 0;
86
+
87
+ &.dropdown {
88
+ .dropdown-toggle {
89
+ display: none;
90
+ }
91
+ }
92
+
93
+ .dropdown-menu {
94
+ position: relative;
95
+ left: 0;
96
+ padding: 0;
97
+ opacity: 1;
98
+ visibility: visible;
99
+ transform: scale(1);
100
+ min-width: auto;
101
+ border: none;
102
+ box-shadow: none;
103
+ background-color: inherit;
104
+
105
+ .nav__link {
106
+ display: block;
107
+ padding: 7px 0;
108
+ }
109
+ }
110
+
111
+ .nav__link {
112
+ display: block;
113
+ padding: 7px 0;
114
+ text-align: right;
115
+ transition: color .2s ease;
116
+ }
117
+ }
118
+ }
119
+ }
120
+ }
121
+
122
+ .main-nav__box {
123
+ display: flex;
124
+ align-items: center;
125
+ margin-left: auto;
126
+
127
+ @media (max-width: vars.$desktop) {
128
+ display: block;
129
+ }
130
+ }
131
+
132
+ .nav__list {
133
+ display: flex;
134
+ align-items: center;
135
+
136
+ .nav__item {
137
+ display: inline-block;
138
+ margin-right: 24px;
139
+ margin-bottom: 0;
140
+
141
+ &:last-child {
142
+ margin-right: 0;
143
+ }
144
+
145
+ .nav__link {
146
+ position: relative;
147
+ padding: 12px 0;
148
+ font-size: 20px;
149
+ line-height: 1;
150
+ text-decoration: underline;
151
+ text-decoration-thickness: 1px;
152
+ text-underline-offset: 2px;
153
+ text-decoration-color: transparent;
154
+ will-change: transform;
155
+
156
+ &:hover {
157
+ text-decoration-color: var(--link-color);
158
+ }
159
+
160
+ &.active-link {
161
+ text-decoration-color: var(--link-color);
162
+ }
163
+ }
164
+
165
+ &.dropdown {
166
+ position: relative;
167
+
168
+ &:hover {
169
+ .dropdown-menu {
170
+ opacity: 1;
171
+ visibility: visible;
172
+ transform: translate3d(0, 0, 0);
173
+ }
174
+ }
175
+
176
+ i {
177
+ font-size: 16px;
178
+ }
179
+
180
+ .dropdown-toggle {
181
+ text-decoration: none;
182
+ color: var(--link-color);
183
+ cursor: pointer;
184
+ }
185
+ }
186
+
187
+ .dropdown-menu {
188
+ position: absolute;
189
+ top: calc(100% + 8px);
190
+ left: -32px;
191
+ transform: translate3d(0, 10px, 0);
192
+ backface-visibility: hidden;
193
+ z-index: 100;
194
+ min-width: 150px;
195
+ display: block;
196
+ padding: 16px;
197
+ opacity: 0;
198
+ visibility: hidden;
199
+ transition: all .2s ease;
200
+ border-radius: 16px;
201
+ box-shadow: 0 8px 40px -8px rgba(0, 0, 0, .22);
202
+ background-color: var(--background-color);
203
+
204
+ .nav__link {
205
+ position: relative;
206
+ display: block;
207
+ padding: 5px 16px;
208
+ font-size: 20px;
209
+ line-height: 1;
210
+ will-change: transform;
211
+
212
+ &:last-child {
213
+ margin-bottom: 0;
214
+ }
215
+ }
216
+ }
217
+
218
+ }
219
+ }
220
+
221
+ .home-page .nav__item .nav__link.active-link {
222
+ text-decoration-color: transparent;
223
+
224
+ &:hover {
225
+ text-decoration-color: var(--link-color);
226
+ }
227
+ }
228
+
229
+ /* Humburger Menu */
230
+ .hamburger {
231
+ width: 28px;
232
+ height: 28px;
233
+ display: none;
234
+ cursor: pointer;
235
+
236
+ @media (max-width: vars.$desktop) {
237
+ display: flex;
238
+ align-items: center;
239
+ }
240
+ }
241
+
242
+ .hamburger div,
243
+ .hamburger div:after,
244
+ .hamburger div:before {
245
+ width: 28px;
246
+ height: 4px;
247
+ border-radius: 10px;
248
+ transition: all 0.15s linear;
249
+ background-color: var(--heading-font-color);
250
+ }
251
+
252
+ .hamburger div:before,
253
+ .hamburger div:after {
254
+ content: "";
255
+ position: absolute;
256
+ }
257
+
258
+ .hamburger div:before {
259
+ transform: translateY(-200%);
260
+ }
261
+
262
+ .hamburger div:after {
263
+ transform: translateY(200%);
264
+ }
265
+
266
+ .hamburger.is-open div {
267
+ background: transparent;
268
+ }
269
+
270
+ .hamburger.is-open div:before {
271
+ transform: rotate(45deg);
272
+ }
273
+
274
+ .hamburger.is-open div:after {
275
+ transform: rotate(-45deg);
276
+ }
277
+
278
+ .nav-button {
279
+ display: flex;
280
+ align-items: center;
281
+ gap: 12px;
282
+ margin-left: 24px;
283
+
284
+ .search-button {
285
+ display: flex;
286
+ align-items: center;
287
+ gap: 8px;
288
+ min-width: 140px;
289
+ padding: 6px;
290
+ font-size: 20px;
291
+ border-radius: 16px;
292
+ color: var(--link-color);
293
+ background: var(--background-alt-color);
294
+ transition: vars.$global-transition;
295
+ cursor: pointer;
296
+
297
+ &:hover {
298
+ background: var(--background-alt-color-2)
299
+ }
300
+
301
+ .search-button__icon {
302
+ display: flex;
303
+ justify-content: center;
304
+ align-items: center;
305
+ width: 32px;
306
+ height: 32px;
307
+ font-size: 14px;
308
+ border-radius: 12px;
309
+ background: var(--primary-color);
310
+ }
311
+ }
312
+
313
+ @media (max-width: vars.$desktop) {
314
+ flex-direction: column;
315
+ align-items: flex-end;
316
+ margin-top: 12px;
317
+ margin-left: 0;
318
+ gap: 8px;
319
+ }
320
+ }
321
+
322
+ /* Toggle Theme */
323
+ .toggle-theme {
324
+ display: flex;
325
+ justify-content: center;
326
+ align-items: center;
327
+ padding: 6px 16px;
328
+ border: 1px solid var(--border-color);
329
+ border-radius: 16px;
330
+ user-select: none;
331
+ cursor: pointer;
332
+
333
+ .toggle-text {
334
+ font-size: 20px;
335
+ color: var(--link-color);
336
+ }
337
+
338
+
339
+ @media (max-width: vars.$desktop) {
340
+ padding: 6px 12px;
341
+ }
342
+ }
343
+
344
+ .toggle-sun,
345
+ .toggle-moon {
346
+ display: flex;
347
+ align-items: center;
348
+ gap: 8px;
349
+
350
+ svg {
351
+ width: 14px;
352
+ height: 14px;
353
+
354
+ path {
355
+ fill: var(--link-color);
356
+ }
357
+ }
358
+ }
359
+
360
+ .toggle-sun {
361
+ display: none;
362
+ }
363
+
364
+ .dark-mode {
365
+ .toggle-sun {
366
+ display: flex;
367
+ }
368
+
369
+ .toggle-moon {
370
+ display: none;
371
+ }
372
+
373
+ .main-nav {
374
+ .dropdown-menu {
375
+ background: var(--background-alt-color);
376
+ }
377
+ }
378
+
379
+ .search-button__icon {
380
+ color: var(--dark);
381
+ }
382
+
383
+ @media (max-width: vars.$desktop) {
384
+ .main-nav {
385
+ background: var(--background-alt-color);
386
+ }
387
+
388
+ .nav-button {
389
+ .search-button {
390
+ border: 1px solid var(--border-color);
391
+ }
392
+ }
393
+ }
394
+ }
@@ -0,0 +1,5 @@
1
+ @forward "buttons";
2
+
3
+ @forward "header";
4
+
5
+ @forward "sections";
@@ -0,0 +1,84 @@
1
+ @use "balean/variables" as vars;
2
+
3
+ /* Sections */
4
+ .section {
5
+ margin-top: 80px;
6
+
7
+ .section__info {
8
+ margin-bottom: 60px;
9
+ text-align: center;
10
+ }
11
+
12
+ .section__title {
13
+ margin-bottom: 12px;
14
+ font-size: 64px;
15
+ }
16
+
17
+ .section__description {
18
+ margin-bottom: 0;
19
+ font-size: 40px;
20
+ line-height: 1.3;
21
+ color: var(--text-color);
22
+ }
23
+
24
+ .section__navigation {
25
+ margin-top: 28px;
26
+ text-align: center;
27
+ }
28
+
29
+ @media (max-width: vars.$wide) {
30
+ .section__title {
31
+ font-size: 48px;
32
+ }
33
+
34
+ .section__description {
35
+ font-size: 36px;
36
+ }
37
+ }
38
+
39
+ @media (max-width: vars.$desktop) {
40
+ margin-top: 60px;
41
+
42
+ .section__info {
43
+ margin-bottom: 40px;
44
+ }
45
+
46
+ .section__title {
47
+ font-size: 40px;
48
+ }
49
+
50
+ .section__description {
51
+ font-size: 28px;
52
+ }
53
+
54
+ .section__navigation {
55
+ margin-top: 8px;
56
+ }
57
+ }
58
+
59
+ @media (max-width: vars.$tablet) {
60
+ .section__description {
61
+ font-size: 22px;
62
+ }
63
+ }
64
+
65
+ @media (max-width: vars.$mobile) {
66
+ margin-top: 40px;
67
+
68
+ .section__info {
69
+ margin-bottom: 32px;
70
+ }
71
+
72
+ .section__title {
73
+ font-size: 28px;
74
+ }
75
+
76
+ .section__description {
77
+ font-size: inherit;
78
+ }
79
+
80
+ .section__navigation {
81
+ margin-top: 0;
82
+ }
83
+ }
84
+ }
@@ -0,0 +1,9 @@
1
+ /* Fonts */
2
+ @font-face {
3
+ font-display: swap;
4
+ font-family: "Comfortaa";
5
+ font-optical-sizing: auto;
6
+ font-weight: 400;
7
+ font-style: normal;
8
+ src: url('/assets/fonts/comfortaa-v45-latin-regular.woff2') format('woff2');
9
+ }
@@ -0,0 +1,71 @@
1
+ @use "balean/variables" as vars;
2
+
3
+ /* Color Scheme */
4
+ :root {
5
+ --primary-color: vars.$balean-secondary-1;
6
+ --secondary-color: vars.$balean-primary-1;
7
+ --white: #fff;
8
+ --light-gray: #eaecef;
9
+ --light-blue: vars.$balean-primary-3;
10
+ --blue-gray: vars.$balean-primary-4;
11
+ --gray: #767676;
12
+ --dark: #111;
13
+ --dark-blue: vars.$balean-primary-1;
14
+
15
+ --background-color: var(--white);
16
+ --background-alt-color: var(--light-gray);
17
+ --background-alt-color-2: var(--light-blue);
18
+
19
+ --text-color: var(--dark);
20
+ --text-alt-color: var(--gray);
21
+
22
+ --heading-font-color: var(--dark);
23
+
24
+ --link-color: var(--dark);
25
+ --link-color-hover: var(--dark);
26
+
27
+ --button-color: var(--dark);
28
+ --button-background-color: var(--primary-color);
29
+ --button-background-hover: #ffd34e;
30
+
31
+ --border-color: var(--light-gray);
32
+ --border-color-alt: var(--light-gray);
33
+
34
+ --th-color: var(--light-gray);
35
+ --tr-color: var(--light-gray);
36
+
37
+ --syntax-highlighting-background: var(--light-gray);
38
+ }
39
+
40
+ :root[dark] {
41
+ --primary-color: vars.$balean-secondary-1;
42
+ --secondary-color: vars.$balean-bg-3;
43
+ --white: #fff;
44
+ --light-gray: #f0f0f0;
45
+ --gray: #9e9e9e;
46
+ --dark: vars.$balean-bg-3;
47
+
48
+ --background-color: var(--dark);
49
+ --background-alt-color: #22222a;
50
+ --background-alt-color-2: #27272f;
51
+
52
+ --text-color: var(--gray);
53
+ --text-alt-color: var(--gray);
54
+
55
+ --heading-font-color: var(--light-gray);
56
+
57
+ --link-color: var(--light-gray);
58
+ --link-color-hover: var(--light-gray);
59
+
60
+ --button-color: var(--dark);
61
+ --button-background-color: var(--primary-color);
62
+ --button-background-hover: #ffd34e;
63
+
64
+ --border-color: #2f3135;
65
+ --border-color-alt: #2f3135;
66
+
67
+ --th-color: #22222a;
68
+ --tr-color: #22222a;
69
+
70
+ --syntax-highlighting-background: #22222a;
71
+ }
@@ -0,0 +1,2 @@
1
+ @forward "balean-font";
2
+ @forward "color-scheme";
@@ -0,0 +1,13 @@
1
+ /* Animate */
2
+ .animate {
3
+ animation: animateElement 1s ease;
4
+
5
+ @keyframes animateElement {
6
+ 0% {
7
+ transform: translate(0px, 40px);
8
+ }
9
+ 100% {
10
+ transform: translate(0px, 0px);
11
+ }
12
+ }
13
+ }
@@ -0,0 +1,131 @@
1
+ @use "balean/variables" as vars;
2
+
3
+ .container {
4
+ max-width: vars.$container-base-width;
5
+ padding-left: calc(#{vars.$container-offset} * 2);
6
+ padding-right: calc(#{vars.$container-offset} * 2);
7
+ }
8
+
9
+ .container-big {
10
+ max-width: 100%;
11
+ padding-left: calc(#{vars.$container-offset} * 2);
12
+ padding-right: calc(#{vars.$container-offset} * 2);
13
+ }
14
+
15
+ .container,
16
+ .container-big {
17
+ margin: 0 auto;
18
+ @media (max-width: vars.$mobile) {
19
+ max-width: 480px;
20
+ padding-left: calc(#{vars.$container-offset} + 4px);
21
+ padding-right: calc(#{vars.$container-offset} + 4px);
22
+ }
23
+ }
24
+
25
+ .row {
26
+ display: flex;
27
+ flex-wrap: wrap;
28
+ flex: 0 1 auto;
29
+ flex-direction: row;
30
+ box-sizing: border-box;
31
+ margin-left: (vars.$base-spacing-unit * -1);
32
+ margin-right: (vars.$base-spacing-unit * -1);
33
+ }
34
+
35
+ .col {
36
+ padding-left: vars.$base-spacing-unit;
37
+ padding-right: vars.$base-spacing-unit;
38
+ }
39
+
40
+ [class^="col-"] {
41
+ flex: auto;
42
+ }
43
+
44
+ @for $i from 0 through vars.$columns {
45
+ .col-#{$i} {
46
+ width: calc( #{$i} / #{vars.$columns} * 100% );
47
+ }
48
+ }
49
+
50
+ @for $i from 0 through vars.$columns {
51
+ .push-#{$i} {
52
+ margin-left: calc( #{$i} / #{vars.$columns} * 100% );
53
+ }
54
+ }
55
+
56
+ @for $i from 0 through vars.$columns {
57
+ .pull-#{$i} {
58
+ margin-right: calc( #{$i} / #{vars.$columns} * 100% );
59
+ }
60
+ }
61
+
62
+ @each $key, $val in vars.$mq {
63
+
64
+ // DESKTOP
65
+ @media(max-width: vars.$desktop) {
66
+
67
+ @for $i from 0 through vars.$columns {
68
+ .col-d-#{$i} {
69
+ width: calc( #{$i} / #{vars.$columns} * 100% );
70
+ }
71
+ }
72
+
73
+ @for $i from 0 through vars.$columns {
74
+ .push-d-#{$i} {
75
+ margin-left: calc( #{$i} / #{vars.$columns} * 100% );
76
+ }
77
+ }
78
+
79
+ @for $i from 0 through vars.$columns {
80
+ .pull-d-#{$i} {
81
+ margin-right: calc( #{$i} / #{vars.$columns} * 100% );
82
+ }
83
+ }
84
+ }
85
+
86
+
87
+ // TABLET
88
+ @media(max-width: vars.$tablet) {
89
+
90
+ @for $i from 0 through vars.$columns {
91
+ .col-t-#{$i} {
92
+ width: calc( #{$i} / #{vars.$columns} * 100% );
93
+ }
94
+ }
95
+
96
+ @for $i from 0 through vars.$columns {
97
+ .push-t-#{$i} {
98
+ margin-left: calc( #{$i} / #{vars.$columns} * 100% );
99
+ }
100
+ }
101
+
102
+ @for $i from 0 through vars.$columns {
103
+ .pull-t-#{$i} {
104
+ margin-right: calc( #{$i} / #{vars.$columns} * 100% );
105
+ }
106
+ }
107
+ }
108
+
109
+ // MOBILE
110
+ @media(max-width: vars.$mobile) {
111
+
112
+ @for $i from 0 through vars.$columns {
113
+ .col-m-#{$i} {
114
+ width: calc( #{$i} / #{vars.$columns} * 100% );
115
+ }
116
+ }
117
+
118
+ @for $i from 0 through vars.$columns {
119
+ .push-m-#{$i} {
120
+ margin-left: calc( #{$i} / #{vars.$columns} * 100% );
121
+ }
122
+ }
123
+
124
+ @for $i from 0 through vars.$columns {
125
+ .pull-m-#{$i} {
126
+ margin-right: calc( #{$i} / #{vars.$columns} * 100% );
127
+ }
128
+ }
129
+ }
130
+
131
+ }
@@ -0,0 +1,7 @@
1
+ @forward "normalize";
2
+ @forward "reset";
3
+ @forward "shared";
4
+ @forward "syntax-highlighting";
5
+ @forward "grid";
6
+ @forward "animate";
7
+ @forward "splide";