@vixcom/ui 1.1.0 → 1.2.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.
Files changed (170) hide show
  1. package/{js → dist/js}/bootstrap.min.js +6 -6
  2. package/{js → dist/js}/jquery.min.js +3 -3
  3. package/{js → dist/js}/lodash.min.js +138 -138
  4. package/{js → dist/js}/mdb.min.js +15410 -15410
  5. package/{js → dist/js}/owl.carousel.min.js +6 -6
  6. package/firebase.json +54 -54
  7. package/http-server.sh +3 -3
  8. package/package.json +6 -5
  9. package/src/assets/img/default.png +0 -0
  10. package/src/assets/img/favicon.png +0 -0
  11. package/src/assets/img/icon.png +0 -0
  12. package/src/assets/img/logo.dark.png +0 -0
  13. package/src/assets/img/logo.png +0 -0
  14. package/src/assets/img/logo.white.png +0 -0
  15. package/{css → src/css}/animations.css +2 -3
  16. package/src/css/animations.css.map +1 -0
  17. package/{css → src/css}/app.css +22 -30
  18. package/src/css/app.css.map +1 -0
  19. package/{css → src/css}/colors.css +495 -491
  20. package/src/css/colors.css.map +1 -0
  21. package/src/css/external/bootstrap-grid.css +4055 -0
  22. package/src/css/external/bootstrap-grid.css.map +1 -0
  23. package/src/css/external/bootstrap.css +9582 -0
  24. package/src/css/external/bootstrap.css.map +1 -0
  25. package/src/css/external/mdb.css +8811 -0
  26. package/src/css/external/mdb.css.map +1 -0
  27. package/src/css/external/owl-carousel.css +218 -0
  28. package/src/css/external/owl-carousel.css.map +1 -0
  29. package/src/css/external/tailwindcss.css +3 -0
  30. package/src/css/external/tailwindcss.css.map +1 -0
  31. package/{css → src/css}/helper/primefaces.css +0 -1
  32. package/{css → src/css}/helper/primefaces.css.map +1 -1
  33. package/src/css/icons/external/bootstrap.icons.css +5502 -0
  34. package/src/css/icons/external/bootstrap.icons.css.map +1 -0
  35. package/src/css/icons/external/fontawesome.icons.css +6122 -0
  36. package/src/css/icons/external/fontawesome.icons.css.map +1 -0
  37. package/src/css/icons/external/material-design.icons.css +5727 -0
  38. package/src/css/icons/external/material-design.icons.css.map +1 -0
  39. package/src/css/icons/external/themify.icons.css +1428 -0
  40. package/src/css/icons/external/themify.icons.css.map +1 -0
  41. package/{css → src/css}/index.css +2 -3
  42. package/src/css/index.css.map +1 -0
  43. package/src/css/main.css.map +1 -0
  44. package/src/css/menu.css +573 -0
  45. package/src/css/menu.css.map +1 -0
  46. package/{css → src/css}/polyfills.css +0 -1
  47. package/src/css/polyfills.css.map +1 -0
  48. package/{css → src/css}/sizes.css +0 -1436
  49. package/src/css/sizes.css.map +1 -0
  50. package/{css → src/css}/variables.css +39 -39
  51. package/src/fonts/MontessoriScript.ttf +0 -0
  52. package/src/fonts/Montserrat-Bold.ttf +0 -0
  53. package/src/fonts/Montserrat-Regular.ttf +0 -0
  54. package/src/fonts/NotoSans-Bold.ttf +0 -0
  55. package/src/fonts/Roboto-Bold.ttf +0 -0
  56. package/src/fonts/Roboto-Regular.ttf +0 -0
  57. package/src/fonts/bootstrap-icons.woff +0 -0
  58. package/src/fonts/fa-brands.woff +0 -0
  59. package/src/fonts/fa-regular.woff +0 -0
  60. package/src/fonts/fa-solid.woff +0 -0
  61. package/src/fonts/material-design-icons.ttf +0 -0
  62. package/{index.html → src/index.html} +205 -205
  63. package/src/js/axios.min.js +3 -0
  64. package/src/js/bootstrap.min.js +7 -0
  65. package/{pages/tier-1/scripts → src/js}/jquery.min.js +3 -3
  66. package/src/js/lodash.min.js +139 -0
  67. package/src/js/mdb.min.js +15411 -0
  68. package/src/js/owl.carousel.min.js +7 -0
  69. package/src/js/rapidoc-min.js +4 -0
  70. package/{pages/tier-1/scripts → src/js}/sidebar.min.js +49 -49
  71. package/{pages/error/index.html → src/pages/404.html} +31 -31
  72. package/{pages/sidemenu/index.html → src/pages/sidemenu/flex.html} +35 -35
  73. package/src/pages/sidemenu/grid.html +58 -0
  74. package/{pages/tier-2 → src/pages/tier-1}/LICENSE +201 -201
  75. package/{pages → src/pages}/tier-1/index.html +73 -73
  76. package/{pages/tier-2 → src/pages/tier-1}/scripts/jquery.min.js +3 -3
  77. package/src/pages/tier-1/scripts/sidebar.min.js +50 -0
  78. package/{pages/tier-2 → src/pages/tier-1}/styles/bootstrap.css +9494 -9494
  79. package/{pages/tier-2 → src/pages/tier-1}/styles/color.css +27 -27
  80. package/{pages → src/pages}/tier-1/styles/layout.css +32 -32
  81. package/{pages/tier-2 → src/pages/tier-1}/styles/mdb.css +9656 -9656
  82. package/{pages → src/pages}/tier-1/styles/page.css +25 -25
  83. package/{pages → src/pages}/tier-1/styles/sidebar.css +192 -192
  84. package/{pages/tier-2 → src/pages/tier-1}/styles/themify.css +1427 -1427
  85. package/{pages/tier-1 → src/pages/tier-2}/LICENSE +201 -201
  86. package/{pages → src/pages}/tier-2/index.html +64 -64
  87. package/src/pages/tier-2/scripts/jquery.min.js +4 -0
  88. package/{pages → src/pages}/tier-2/scripts/sidebar.min.js +49 -49
  89. package/{pages/tier-1 → src/pages/tier-2}/styles/bootstrap.css +9494 -9494
  90. package/{pages/tier-1 → src/pages/tier-2}/styles/color.css +27 -27
  91. package/{pages → src/pages}/tier-2/styles/layout.css +42 -42
  92. package/{pages/tier-1 → src/pages/tier-2}/styles/mdb.css +9656 -9656
  93. package/{pages → src/pages}/tier-2/styles/page.css +25 -25
  94. package/{pages → src/pages}/tier-2/styles/sidebar.css +192 -192
  95. package/{pages/tier-1 → src/pages/tier-2}/styles/themify.css +1427 -1427
  96. package/src/styles/_mixins.scss +445 -0
  97. package/{styles → src/styles}/animations.scss +190 -190
  98. package/{styles → src/styles}/app.scss +2015 -2020
  99. package/{styles → src/styles}/colors.scss +118 -117
  100. package/{css → src/styles}/external/bootstrap.css +10307 -10307
  101. package/{css → src/styles}/external/mdb.css +9444 -9444
  102. package/{css → src/styles}/external/owl-carousel.css +217 -217
  103. package/src/styles/external/tailwindcss.css +0 -0
  104. package/{styles → src/styles}/fonts.scss +16 -16
  105. package/{styles → src/styles}/grid.scss +3 -3
  106. package/{styles → src/styles}/helper/owl.carousel.scss +91 -91
  107. package/{styles → src/styles}/helper/primefaces.scss +373 -373
  108. package/{styles → src/styles}/helper/tailwindcss.scss +3 -3
  109. package/{styles → src/styles}/index.scss +25 -25
  110. package/{styles → src/styles}/menu.scss +621 -566
  111. package/{styles → src/styles}/polyfills.scss +8 -8
  112. package/{styles → src/styles}/sizes.scss +195 -191
  113. package/{styles → src/styles}/variables.scss +30 -30
  114. package/tailwind.config.js +23 -0
  115. package/.firebaserc +0 -17
  116. package/.github/release-please.yml +0 -2
  117. package/.github/workflows/deploy-prod.yml +0 -26
  118. package/.pnpm-debug.log +0 -19
  119. package/css/animations.css.map +0 -1
  120. package/css/app.css.map +0 -1
  121. package/css/colors.css.map +0 -1
  122. package/css/helper/primefaces.org.css.map +0 -1
  123. package/css/index.css.map +0 -1
  124. package/css/menu.css +0 -556
  125. package/css/menu.css.map +0 -1
  126. package/css/polyfills.css.map +0 -1
  127. package/css/sidebar.css.map +0 -1
  128. package/css/sizes.css.map +0 -1
  129. package/styles/_mixins.scss +0 -309
  130. package/test.http +0 -14
  131. /package/{assets → dist/assets}/img/favicon.png +0 -0
  132. /package/{assets → dist/assets}/img/icon.png +0 -0
  133. /package/{fonts → dist/fonts}/MontessoriScript.ttf +0 -0
  134. /package/{fonts → dist/fonts}/Montserrat-Bold.ttf +0 -0
  135. /package/{fonts → dist/fonts}/Montserrat-Regular.ttf +0 -0
  136. /package/{fonts → dist/fonts}/NotoSans-Bold.ttf +0 -0
  137. /package/{fonts → dist/fonts}/Roboto-Bold.ttf +0 -0
  138. /package/{fonts → dist/fonts}/Roboto-Regular.ttf +0 -0
  139. /package/{fonts → dist/fonts}/bootstrap-icons.woff +0 -0
  140. /package/{fonts → dist/fonts}/fa-brands.woff +0 -0
  141. /package/{fonts → dist/fonts}/fa-regular.woff +0 -0
  142. /package/{fonts → dist/fonts}/fa-solid.woff +0 -0
  143. /package/{fonts → dist/fonts}/material-design-icons.ttf +0 -0
  144. /package/{js → dist/js}/axios.min.js +0 -0
  145. /package/{js → dist/js}/rapidoc-min.js +0 -0
  146. /package/{js → dist/js}/sidebar.min.js +0 -0
  147. /package/{css → src/css}/fonts.css +0 -0
  148. /package/{css → src/css}/fonts.css.map +0 -0
  149. /package/{css → src/css}/grid.css +0 -0
  150. /package/{css → src/css}/grid.css.map +0 -0
  151. /package/{css → src/css}/helper/owl.carousel.css +0 -0
  152. /package/{css → src/css}/helper/owl.carousel.css.map +0 -0
  153. /package/{css → src/css}/helper/tailwindcss.css +0 -0
  154. /package/{css → src/css}/helper/tailwindcss.css.map +0 -0
  155. /package/{css → src/css}/variables.css.map +0 -0
  156. /package/{pages → src/pages}/tier-1/fonts/krub/Krub-Bold.ttf +0 -0
  157. /package/{pages → src/pages}/tier-1/fonts/krub/Krub-Light.ttf +0 -0
  158. /package/{pages → src/pages}/tier-1/fonts/krub/Krub-Regular.ttf +0 -0
  159. /package/{pages → src/pages}/tier-1/fonts/themify.woff +0 -0
  160. /package/{pages → src/pages}/tier-1/preview.png +0 -0
  161. /package/{pages → src/pages}/tier-2/fonts/krub/Krub-Bold.ttf +0 -0
  162. /package/{pages → src/pages}/tier-2/fonts/krub/Krub-Light.ttf +0 -0
  163. /package/{pages → src/pages}/tier-2/fonts/krub/Krub-Regular.ttf +0 -0
  164. /package/{pages → src/pages}/tier-2/fonts/themify.woff +0 -0
  165. /package/{pages → src/pages}/tier-2/preview.png +0 -0
  166. /package/{css → src/styles}/external/bootstrap-grid.css +0 -0
  167. /package/{css → src/styles}/icons/external/bootstrap.icons.css +0 -0
  168. /package/{css → src/styles}/icons/external/fontawesome.icons.css +0 -0
  169. /package/{css → src/styles}/icons/external/material-design.icons.css +0 -0
  170. /package/{css → src/styles}/icons/external/themify.icons.css +0 -0
@@ -1,566 +1,621 @@
1
- @import 'mixins';
2
-
3
- /**
4
- * @Author vixson https://vixson.github.io
5
- * @Description Menu styles which includes:
6
- * 1. side-menu
7
- * 2. full-menu (fullscreen floating)
8
- * 2. float-menu (miniscreen corner floating)
9
- */
10
-
11
- @mixin md-toggled-side-menu {
12
- width: 15%;
13
- flex-basis: 15%;
14
-
15
- .menu-header {
16
- .menu-logo,
17
- .main-menu-toggle {
18
- display: none;
19
- }
20
-
21
- .title {
22
- opacity: 0;
23
- height: 0;
24
- margin-bottom: 0;
25
- }
26
- }
27
-
28
- .nav-menu .nav-item {
29
- justify-content: center;
30
- }
31
-
32
- .icon {
33
- /* margin-right: 0; */
34
- }
35
-
36
- .menu-header,
37
- .menu-footer,
38
- .nav-menu {
39
- .nav-item,
40
- .nav-title {
41
- .label {
42
- opacity: 0;
43
- transform: translateX(100%);
44
- position: absolute;
45
- }
46
- }
47
-
48
- .nav-title {
49
- border-bottom: thin solid;
50
- padding: 0;
51
-
52
- &::before {
53
- }
54
- }
55
- }
56
- }
57
-
58
- .main-menu-trigger {
59
- /* @include absolute-content; */
60
- position: fixed !important;
61
- left: 0;
62
- top: 0;
63
- padding: 0 !important;
64
- margin: 0 !important;
65
- height: 100% !important;
66
- width: 100% !important;
67
- transition: background-color 0.5s ease-in;
68
- border-radius: 0 !important;
69
- z-index: -1;
70
-
71
- &::after {
72
- display: none !important;
73
- }
74
-
75
- &:checked {
76
- ~,
77
- ~ * {
78
- .side-menu.md {
79
- opacity: 1;
80
- @include md-toggled-side-menu;
81
- }
82
-
83
- .page {
84
- > footer {
85
- background-color: var(--primary);
86
- color: var(--primary-c);
87
- }
88
- }
89
- }
90
- }
91
-
92
- &:not(:checked) {
93
- ~,
94
- ~ * {
95
- .menu-logo-alt {
96
- display: none;
97
- }
98
- }
99
- }
100
- }
101
-
102
- .main-menu-toggle {
103
- position: relative;
104
- /* font-size: 120%; */
105
- margin-bottom: 0;
106
- /* z-index: 1; */
107
- }
108
-
109
- .menu-header {
110
- display: flex;
111
- }
112
-
113
- .nav-menu {
114
- width: 100%;
115
- height: 100%;
116
- display: flex;
117
- font-size: 120%;
118
- gap: 0.5rem;
119
-
120
- .nav-item {
121
- display: flex;
122
- align-items: center;
123
- padding: 1rem;
124
- text-decoration: none;
125
- color: currentColor;
126
- }
127
- }
128
-
129
- /* side-menu */
130
- .side-menu-container {
131
- position: relative;
132
- display: flex;
133
- flex-direction: row;
134
- width: 100%;
135
- height: 100%;
136
-
137
- &.rtl {
138
- .page {
139
- order: -1;
140
- }
141
- }
142
- }
143
-
144
- .side-menu {
145
- display: flex;
146
- flex-direction: column;
147
- position: relative;
148
- width: 30%;
149
- height: 100%;
150
- margin: 0;
151
- flex: 1 1 30%;
152
- /* border-right: thin solid var(--secondary); */
153
- transition: width 0.5s, flex-basis 0.5s, transform 0.5s, opacity 0.25s;
154
- overflow: hidden;
155
- z-index: 1;
156
-
157
- /* side-menu scrollbar */
158
- ::-webkit-scrollbar {
159
- width: 0;
160
- }
161
-
162
- ::-webkit-scrollbar-thumb {
163
- background-color: currentColor;
164
- }
165
-
166
- .menu-header {
167
- padding: 1rem;
168
-
169
- .title {
170
- transition: height 0.5s linear 0.5s, opacity 0.5s linear 0.5s;
171
- }
172
- }
173
-
174
- .nav-menu {
175
- flex-direction: column;
176
- overflow-y: scroll;
177
- overflow-x: hidden;
178
-
179
- .nav-item {
180
- @include before-content;
181
-
182
- &::before {
183
- background-color: currentColor;
184
- opacity: 0;
185
- transition: opacity 0.5s;
186
- }
187
-
188
- &.active {
189
- /* border-right: 2px solid; */
190
-
191
- &::before {
192
- opacity: 0.25;
193
- }
194
- }
195
-
196
- &:hover::before {
197
- opacity: 0.125;
198
- }
199
-
200
- .label {
201
- overflow: hidden;
202
- text-overflow: ellipsis;
203
- white-space: nowrap;
204
- }
205
- }
206
- }
207
-
208
- .icon {
209
- // margin: 0.125rem 1em;
210
- // margin-left: 0;
211
- }
212
-
213
- footer,
214
- .menu-footer {
215
- margin-top: auto;
216
- }
217
- }
218
-
219
- .full-menu {
220
- display: flex;
221
- transition: transform 0.5s;
222
- align-items: center;
223
- justify-content: center;
224
-
225
- .menu-header {
226
- display: flex;
227
- }
228
-
229
- .nav-menu {
230
- align-items: center;
231
- justify-content: center;
232
- overflow: scroll;
233
- }
234
- }
235
-
236
- .float-menu {
237
- display: flex;
238
-
239
- .nav-menu {
240
- .nav-item {
241
- gap: 1rem;
242
- }
243
- }
244
- }
245
-
246
- /* Page */
247
-
248
- .page {
249
- display: flex;
250
- flex-direction: column;
251
- position: relative;
252
- width: 100%;
253
- height: 100%;
254
- margin: 0;
255
- flex: 1 1 100%;
256
- transition: width 0.5s;
257
- overflow: hidden;
258
- z-index: 1;
259
-
260
- footer {
261
- background-color: var(--secondary);
262
- color: var(--white);
263
- }
264
- }
265
-
266
- .page-content {
267
- position: relative;
268
- padding: 3em;
269
- width: 100%;
270
- flex: 1 1 100%;
271
- // border: thin solid var(--white);
272
- transition: margin 0.2s;
273
- }
274
-
275
- /* Above <---> Tablets/Mini PC */
276
- @media (min-width: 768px) {
277
- .main-menu-trigger {
278
- &:checked {
279
- ~,
280
- ~ * {
281
- .side-menu {
282
- width: 0;
283
- flex-basis: 0;
284
- opacity: 0;
285
- padding: 0;
286
- }
287
- }
288
- }
289
-
290
- &:not(:checked) {
291
- ~,
292
- ~ * {
293
- .side-menu.minimized {
294
- @include md-toggled-side-menu;
295
- }
296
-
297
- .page .app-header {
298
- .main-menu-toggle {
299
- display: none;
300
- }
301
- }
302
- }
303
- }
304
- }
305
- }
306
-
307
- /* Above <---> Mobile */
308
- @media (min-width: 576px) {
309
- .float-menu,
310
- .full-menu {
311
- align-items: center;
312
-
313
- .menu-header {
314
- // .menu-logo,
315
- .main-menu-toggle {
316
- display: none;
317
- }
318
- }
319
- }
320
-
321
- .float-menu {
322
- /* width: 75%; */
323
- }
324
-
325
- .main-menu-trigger {
326
- &,
327
- &::before,
328
- &::after {
329
- background-color: transparent !important;
330
- }
331
-
332
- &:not(:checked) {
333
- ~,
334
- ~ * {
335
- .page {
336
- /* TODO: Use this on Sibemenu Type 2 - Page overlaps side-menu */
337
- /*
338
- border-left: thin solid;
339
- @include before-content;
340
-
341
- &::before {
342
- box-shadow: 0 0 2.5rem -1.75rem hsla(var(--black-hs), var(--black-l), 0.125);
343
- } */
344
- /* ---- */
345
- }
346
- }
347
- }
348
- }
349
- }
350
-
351
- /* Mobile <---> Tablets/Mini PC */
352
- @media (min-width: 576px) and (max-width: 767.98px) {
353
- .main-menu-trigger {
354
- &:not(:checked) {
355
- ~,
356
- ~ * {
357
- .side-menu * > {
358
- .label {
359
- transition: position 0.25s linear 0.125s,
360
- transform 0.25s linear 0.125s, opacity 0.5s linear 0.125s;
361
- }
362
- }
363
- }
364
- }
365
-
366
- &:checked {
367
- ~,
368
- ~ * {
369
- .side-menu {
370
- @include md-toggled-side-menu;
371
- }
372
- }
373
- }
374
- }
375
-
376
- .side-menu {
377
- .btn,
378
- .nav-menu .nav-item {
379
- padding-left: 1rem;
380
- padding-right: 1rem;
381
- }
382
-
383
- .main-menu-toggle {
384
- display: none;
385
- }
386
- }
387
-
388
- .float-menu {
389
- /* width: 50%; */
390
- }
391
- }
392
-
393
- /* Tablets/Mini PC <---> BELOW */
394
- @media (max-width: 767.98px) {
395
- .side-menu .btn {
396
- min-width: auto;
397
- }
398
- }
399
-
400
- /* Mobile <--> BELOW */
401
- @media (max-width: 575.98px) {
402
- .main-menu-trigger {
403
- &:not(:checked) {
404
- &,
405
- &::before,
406
- &::after {
407
- background-color: transparent !important;
408
- }
409
-
410
- ~,
411
- ~ * {
412
- .full-menu {
413
- .nav-menu {
414
- display: none;
415
- /* transform: translateY(-100%); */
416
- /* opacity: 0; */
417
- }
418
- }
419
-
420
- // 3, float-menu
421
- .float-menu > *:not(.main-menu-toggle) {
422
- display: none;
423
- }
424
- }
425
- }
426
-
427
- &:checked {
428
- width: 100vw;
429
- background-color: hsla(var(--black-hs), var(--black-l), 0.2);
430
- z-index: 2;
431
-
432
- ~,
433
- ~ * {
434
- // 1. side-menu
435
- .side-menu {
436
- transform: translateX(0);
437
- opacity: 1;
438
-
439
- .main-menu-toggle {
440
- transform: translateX(0);
441
- }
442
-
443
- .menu-logo-alt {
444
- display: none;
445
- }
446
- }
447
-
448
- // 2. full-menu
449
- .full-menu {
450
- --background-color: hsla(
451
- var(--secondary-hs),
452
- var(--secondary-l),
453
- 0.125
454
- );
455
- position: fixed;
456
- flex-direction: column;
457
- transform: translateY(0);
458
- opacity: 1;
459
- font-size: 125%;
460
- background-color: var(--background-color);
461
- color: var(--secondary-c);
462
- backdrop-filter: blur(10px);
463
- z-index: 2;
464
-
465
- .btn {
466
- color: var(--secondary-c) !important;
467
-
468
- &:hover {
469
- background-color: var(--secondary-c) !important;
470
- color: var(--secondary) !important;
471
- }
472
- }
473
-
474
- .menu-header {
475
- order: -1;
476
- padding: 1rem;
477
-
478
- .menu-logo {
479
- display: none;
480
- }
481
-
482
- .menu-logo-alt {
483
- fill: var(--white);
484
- }
485
-
486
- .silhouette {
487
- filter: saturate(0%) brightness(500%);
488
- }
489
- }
490
-
491
- .nav-menu {
492
- flex-direction: column;
493
- }
494
- }
495
-
496
- // 3, float-menu
497
- .float-menu {
498
- width: 100%;
499
- }
500
-
501
- .page .app-header .main-menu-toggle {
502
- transform: translateX(-50%);
503
- }
504
- }
505
- }
506
- }
507
-
508
- .side-menu {
509
- position: fixed;
510
- top: 0;
511
- left: 0;
512
- bottom: 0;
513
- width: 80%;
514
- flex-basis: 80%;
515
- transform: translateX(-100%);
516
- opacity: 0;
517
- box-shadow: 0 0 50px hsla(var(--black-hs), var(--black-l), 0.25);
518
- z-index: 2;
519
- }
520
-
521
- .full-menu {
522
- top: 0;
523
- left: 0;
524
- right: 0;
525
- bottom: 0;
526
- /* transform: translateY(-100%); */
527
- /* opacity: 0; */
528
- z-index: 2;
529
-
530
- .main-menu-trigger:not(:checked) & {
531
- }
532
-
533
- // .nav-menu {
534
- // display: none;
535
- // }
536
-
537
- .menu-header {
538
- width: 100%;
539
- }
540
- }
541
-
542
- .float-menu {
543
- position: fixed;
544
- bottom: 0;
545
- /* left: 0; */
546
- right: 0;
547
- display: flex;
548
- flex-direction: column;
549
-
550
- .nav-menu {
551
- flex-direction: column;
552
- }
553
-
554
- .nav-menu,
555
- .menu-header,
556
- .menu-footer {
557
- padding: 1rem;
558
- }
559
- }
560
-
561
- .page {
562
- .page-content {
563
- padding: 3em 1em;
564
- }
565
- }
566
- }
1
+ @import 'mixins';
2
+
3
+ /**
4
+ * @Author vixson https://vixson.github.io
5
+ * @Description Menu styles which includes:
6
+ * 1. side-menu
7
+ * 2. full-menu (fullscreen floating)
8
+ * 2. float-menu (miniscreen corner floating)
9
+ */
10
+
11
+ @mixin mini-side-menu-toggled {
12
+ .menu-header {
13
+ .menu-logo,
14
+ .main-menu-toggle {
15
+ display: none;
16
+ }
17
+
18
+ .title {
19
+ opacity: 0;
20
+ height: 0;
21
+ margin-bottom: 0;
22
+ }
23
+ }
24
+
25
+ nav .item {
26
+ justify-content: center;
27
+ }
28
+
29
+ nav,
30
+ .menu-header,
31
+ .menu-footer {
32
+ .item,
33
+ .title {
34
+ .label {
35
+ opacity: 0;
36
+ transform: translateX(100%);
37
+ position: absolute;
38
+ }
39
+ }
40
+
41
+ .title {
42
+ border-bottom: thin solid;
43
+ padding: 0;
44
+ }
45
+ }
46
+ }
47
+
48
+ input.main-menu-trigger {
49
+ /* @include absolute-content; */
50
+ position: fixed;
51
+ left: 0;
52
+ top: 0;
53
+ padding: 0;
54
+ margin: 0;
55
+ height: 100%;
56
+ width: 100%;
57
+ transition: background-color 0.5s ease-in;
58
+ border-radius: 0;
59
+ z-index: -1;
60
+
61
+ &::after {
62
+ display: none;
63
+ }
64
+
65
+ &,
66
+ &::before,
67
+ &::after {
68
+ background-color: transparent;
69
+ }
70
+
71
+ &:checked {
72
+ ~,
73
+ ~ * {
74
+ main,
75
+ .page {
76
+ > footer {
77
+ background-color: var(--secondary);
78
+ color: var(--secondary-c);
79
+ }
80
+ }
81
+ }
82
+ }
83
+
84
+ &:not(:checked) {
85
+ ~,
86
+ ~ * {
87
+ }
88
+ }
89
+ }
90
+
91
+ .main-menu-toggle {
92
+ position: relative;
93
+ font-size: 120%;
94
+ margin-bottom: 0;
95
+ z-index: 1;
96
+ }
97
+
98
+ nav,
99
+ .menu-header,
100
+ .menu-footer {
101
+ width: 100%;
102
+ display: flex;
103
+ }
104
+
105
+ nav {
106
+ height: 100%;
107
+ font-size: 120%;
108
+ gap: 0.5rem;
109
+
110
+ .item {
111
+ display: flex;
112
+ align-items: center;
113
+ gap: 0.75rem;
114
+ padding: 0.75rem 1rem;
115
+ text-decoration: none;
116
+ color: currentColor;
117
+
118
+ .label {
119
+ transition: position 0.25s linear 0.125s, transform 0.25s linear 0.125s,
120
+ opacity 0.5s linear 0.125s;
121
+ }
122
+ }
123
+ }
124
+
125
+ /* side-menu */
126
+ .main-menu-container {
127
+ position: relative;
128
+ display: flex;
129
+ flex-direction: row;
130
+ width: 100%;
131
+ height: 100%;
132
+
133
+ &.rtl {
134
+ .page {
135
+ order: -1;
136
+ }
137
+ }
138
+
139
+ &:is(body) {
140
+ width: 100vw;
141
+ height: 100vh;
142
+ }
143
+
144
+ &.grid {
145
+ display: grid;
146
+ grid-template-rows: 1fr;
147
+ transition: 0.5s;
148
+
149
+ &:has(> .side-menu) > {
150
+ main,
151
+ .page {
152
+ section {
153
+ height: 100%;
154
+ min-height: unset;
155
+ }
156
+ }
157
+ }
158
+
159
+ > .side-menu {
160
+ grid-row: 1 / -1;
161
+ }
162
+ }
163
+ }
164
+
165
+ .side-menu {
166
+ display: flex;
167
+ flex-direction: column;
168
+ position: relative;
169
+ height: 100%;
170
+ margin: 0;
171
+ flex: 1 1 30%;
172
+ /* border-right: thin solid var(--secondary); */
173
+ transition: width 0.5s, flex-basis 0.5s, transform 0.5s, opacity 0.25s;
174
+ overflow: hidden;
175
+ z-index: 1;
176
+
177
+ /* side-menu scrollbar */
178
+ ::-webkit-scrollbar {
179
+ width: 0;
180
+ }
181
+
182
+ ::-webkit-scrollbar-thumb {
183
+ background-color: currentColor;
184
+ }
185
+
186
+ .menu-header,
187
+ .menu-footer {
188
+ padding: 1rem;
189
+ align-items: center;
190
+
191
+ .title {
192
+ transition: height 0.5s linear 0.5s, opacity 0.5s linear 0.5s;
193
+ }
194
+ }
195
+
196
+ nav {
197
+ flex-direction: column;
198
+ overflow-y: scroll;
199
+ overflow-x: hidden;
200
+
201
+ .item {
202
+ @include before-content;
203
+
204
+ &::before {
205
+ background-color: currentColor;
206
+ opacity: 0;
207
+ transition: opacity 0.5s;
208
+ }
209
+
210
+ // MARKED: Extend & modify this according to UI/Theme
211
+ &.active::before {
212
+ opacity: 0.25;
213
+ }
214
+
215
+ &:hover::before {
216
+ opacity: 0.125;
217
+ }
218
+
219
+ .label {
220
+ overflow: hidden;
221
+ text-overflow: ellipsis;
222
+ white-space: nowrap;
223
+ }
224
+ }
225
+ }
226
+
227
+ .icon {
228
+ // margin: 0.125rem 1em;
229
+ // margin-left: 0;
230
+ }
231
+
232
+ footer,
233
+ .menu-footer {
234
+ margin-top: auto;
235
+ }
236
+ }
237
+
238
+ .full-menu {
239
+ display: flex;
240
+ transition: transform 0.5s;
241
+ align-items: center;
242
+ justify-content: center;
243
+
244
+ nav {
245
+ align-items: center;
246
+ justify-content: center;
247
+ overflow: scroll;
248
+ }
249
+ }
250
+
251
+ .float-menu {
252
+ display: flex;
253
+
254
+ nav {
255
+ .item {
256
+ gap: 1rem;
257
+ }
258
+ }
259
+ }
260
+
261
+ /* Page */
262
+
263
+ .page,
264
+ main {
265
+ display: flex;
266
+ flex-direction: column;
267
+ position: relative;
268
+ width: 100%;
269
+ height: 100%;
270
+ margin: 0;
271
+ flex: 1 1 100%;
272
+ transition: width 0.5s;
273
+ overflow: hidden;
274
+ z-index: 1;
275
+
276
+ footer {
277
+ background-color: var(--primary);
278
+ color: var(--primary-c);
279
+ }
280
+ }
281
+
282
+ .page-content {
283
+ position: relative;
284
+ padding: 3em;
285
+ width: 100%;
286
+ flex: 1 1 100%;
287
+ transition: margin 0.2s;
288
+ }
289
+
290
+ /* Excluding Tablets */
291
+ @media (max-width: 575.98px) or (min-width: 768px) {
292
+ input.main-menu-trigger {
293
+ &:checked {
294
+ ~,
295
+ ~ * {
296
+ .side-menu .menu-logo-alt {
297
+ display: none;
298
+ }
299
+ }
300
+ }
301
+ &:not(:checked) {
302
+ ~,
303
+ ~ * {
304
+ .side-menu:not(.mini) .menu-logo-alt {
305
+ display: none;
306
+ }
307
+ }
308
+ }
309
+ }
310
+ }
311
+
312
+ /* Above <---> Tablets/Mini PC */
313
+ @media (min-width: 768px) {
314
+ // TODO: Flip minimized state, Make Above tablet minimized when checked, table minimized when unchecked
315
+ .main-menu-container {
316
+ &.grid:has(> .side-menu:not(.mini)):has(> input.main-menu-trigger:checked) {
317
+ grid-template-columns: 0fr 1fr;
318
+ }
319
+
320
+ &:not(.grid) {
321
+ input.main-menu-trigger {
322
+ &:checked {
323
+ ~,
324
+ ~ * {
325
+ .side-menu:not(.mini) {
326
+ width: 0;
327
+ flex-basis: 0;
328
+ opacity: 0;
329
+ padding: 0;
330
+ }
331
+ }
332
+ }
333
+
334
+ &:not(:checked) {
335
+ ~,
336
+ ~ * {
337
+ .side-menu.mini {
338
+ width: 15%;
339
+ flex-basis: 15%;
340
+ @include mini-side-menu-toggled;
341
+ }
342
+
343
+ main,
344
+ .page {
345
+ .page-header {
346
+ .main-menu-toggle {
347
+ display: none;
348
+ }
349
+ }
350
+ }
351
+ }
352
+ }
353
+ }
354
+ }
355
+ }
356
+ }
357
+
358
+ /* Above <---> Mobile */
359
+ @media (min-width: 576px) {
360
+ .main-menu-container {
361
+ &.grid {
362
+ &:has(> .side-menu:not(.mini)),
363
+ &:has(> .side-menu.mini):has(> input.main-menu-trigger:checked) {
364
+ grid-template-columns: 1fr 4fr;
365
+ }
366
+
367
+ &:has(> .side-menu.mini):has(> input.main-menu-trigger:not(:checked)) {
368
+ grid-template-columns: 1fr 11fr;
369
+ @include mini-side-menu-toggled;
370
+ }
371
+ > .side-menu {
372
+ align-items: center;
373
+ }
374
+ }
375
+
376
+ &:not(.grid) {
377
+ .side-menu {
378
+ width: 30%;
379
+ }
380
+ }
381
+ }
382
+
383
+ .float-menu,
384
+ .full-menu {
385
+ align-items: center;
386
+
387
+ .menu-header {
388
+ .menu-logo, // TODO: Review
389
+ .main-menu-toggle {
390
+ display: none;
391
+ }
392
+ }
393
+ }
394
+
395
+ .float-menu {
396
+ /* width: 75%; */
397
+ }
398
+ }
399
+
400
+ /* Mobile <---> Tablets/Mini PC */
401
+ @media (min-width: 576px) and (max-width: 767.98px) {
402
+ // DEBUG: https://sass-lang.com/d/bogus-combinators
403
+ // input.main-menu-trigger:checked {
404
+ // ~,
405
+ // ~ * {
406
+ // @include unify-selector('.main-menu-container.grid', &) {
407
+ // content: 'trigger in grid';
408
+ // }
409
+ // }
410
+ // }
411
+
412
+ .main-menu-container {
413
+ &:has(> .side-menu.mini):has(> input.main-menu-trigger:checked),
414
+ &:has(> .side-menu:not(.mini)):has(
415
+ > input.main-menu-trigger:not(:checked)
416
+ ) {
417
+ .menu-logo-alt {
418
+ display: none;
419
+ }
420
+ }
421
+ &.grid:has(> .side-menu:not(.mini)):has(> input.main-menu-trigger:checked) {
422
+ grid-template-columns: 1fr 11fr;
423
+ @include mini-side-menu-toggled;
424
+ }
425
+
426
+ &:not(.grid) {
427
+ input.main-menu-trigger:checked {
428
+ ~,
429
+ ~ * {
430
+ .side-menu {
431
+ width: 15%;
432
+ flex-basis: 15%;
433
+ @include mini-side-menu-toggled;
434
+ }
435
+ }
436
+ }
437
+
438
+ .side-menu {
439
+ .btn,
440
+ nav .item {
441
+ padding-left: 1rem;
442
+ padding-right: 1rem;
443
+ }
444
+
445
+ .main-menu-toggle {
446
+ display: none;
447
+ }
448
+ }
449
+ }
450
+ }
451
+
452
+ .float-menu {
453
+ /* width: 50%; */
454
+ }
455
+ }
456
+
457
+ /* Tablets/Mini PC <---> BELOW */
458
+ @media (max-width: 767.98px) {
459
+ .side-menu .btn {
460
+ min-width: auto;
461
+ }
462
+ }
463
+
464
+ /* Mobile <--> BELOW */
465
+ @media (max-width: 575.98px) {
466
+ input.main-menu-trigger {
467
+ &:not(:checked) {
468
+ ~,
469
+ ~ * {
470
+ .full-menu {
471
+ nav {
472
+ display: none;
473
+ /* transform: translateY(-100%); */
474
+ /* opacity: 0; */
475
+ }
476
+ }
477
+
478
+ // 3, float-menu
479
+ .float-menu > *:not(.main-menu-toggle) {
480
+ display: none;
481
+ }
482
+ }
483
+ }
484
+
485
+ &:checked {
486
+ width: 100vw;
487
+ background-color: hsla(var(--black-hs), var(--black-l), 0.2);
488
+ z-index: 2;
489
+
490
+ ~,
491
+ ~ * {
492
+ // 1. side-menu
493
+ .side-menu {
494
+ transform: translateX(0);
495
+ opacity: 1;
496
+
497
+ .main-menu-toggle {
498
+ transform: translateX(0);
499
+ }
500
+ }
501
+
502
+ // 2. full-menu
503
+ .full-menu {
504
+ --background-color: hsla(
505
+ var(--secondary-hs),
506
+ var(--secondary-l),
507
+ 0.125
508
+ );
509
+ position: fixed;
510
+ flex-direction: column;
511
+ transform: translateY(0);
512
+ opacity: 1;
513
+ font-size: 125%;
514
+ background-color: var(--background-color);
515
+ color: var(--secondary-c);
516
+ backdrop-filter: blur(10px);
517
+ z-index: 2;
518
+
519
+ .btn {
520
+ color: var(--secondary-c);
521
+
522
+ &:hover {
523
+ background-color: var(--secondary-c);
524
+ color: var(--secondary);
525
+ }
526
+ }
527
+
528
+ .menu-header {
529
+ order: -1;
530
+ padding: 1rem;
531
+
532
+ .menu-logo {
533
+ display: none;
534
+ }
535
+ }
536
+
537
+ nav {
538
+ flex-direction: column;
539
+ }
540
+ }
541
+
542
+ // 3, float-menu
543
+ .float-menu {
544
+ width: 100%;
545
+ }
546
+
547
+ main,
548
+ .page {
549
+ .page-header .main-menu-toggle {
550
+ transform: translateX(-50%);
551
+ }
552
+ }
553
+ }
554
+ }
555
+ }
556
+
557
+ .main-menu-container {
558
+ &.grid:has(> .side-menu) {
559
+ grid-template-columns: 1fr;
560
+ }
561
+
562
+ .side-menu {
563
+ position: fixed;
564
+ top: 0;
565
+ left: 0;
566
+ bottom: 0;
567
+ width: 80%;
568
+ flex-basis: 80%;
569
+ transform: translateX(-100%);
570
+ opacity: 0;
571
+ box-shadow: 0 0 50px hsla(var(--black-hs), var(--black-l), 0.25);
572
+ z-index: 2;
573
+ }
574
+
575
+ .full-menu {
576
+ top: 0;
577
+ left: 0;
578
+ right: 0;
579
+ bottom: 0;
580
+ /* transform: translateY(-100%); */
581
+ /* opacity: 0; */
582
+ z-index: 2;
583
+
584
+ input.main-menu-trigger:not(:checked) & {
585
+ }
586
+
587
+ // nav {
588
+ // display: none;
589
+ // }
590
+
591
+ .menu-header {
592
+ width: 100%;
593
+ }
594
+ }
595
+
596
+ .float-menu {
597
+ position: fixed;
598
+ bottom: 0;
599
+ /* left: 0; */
600
+ right: 0;
601
+ display: flex;
602
+ flex-direction: column;
603
+
604
+ nav {
605
+ flex-direction: column;
606
+ }
607
+
608
+ nav,
609
+ .menu-header,
610
+ .menu-footer {
611
+ padding: 1rem;
612
+ }
613
+ }
614
+
615
+ .page {
616
+ .page-content {
617
+ padding: 3em 1em;
618
+ }
619
+ }
620
+ }
621
+ }