maverick-wave 3.0.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 (141) hide show
  1. package/.claude/commands/mw.md +580 -0
  2. package/.claude/settings.local.json +11 -0
  3. package/.idea/codeStyles/Project.xml +59 -0
  4. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  5. package/.idea/maverick-wave.iml +12 -0
  6. package/.idea/modules.xml +8 -0
  7. package/.idea/prettier.xml +6 -0
  8. package/.idea/vcs.xml +6 -0
  9. package/.prettierignore +6 -0
  10. package/.prettierrc.json +7 -0
  11. package/CHANGELOG.md +420 -0
  12. package/CLAUDE.md +53 -0
  13. package/LICENSE +21 -0
  14. package/README.md +191 -0
  15. package/gulpfile.js +158 -0
  16. package/index.html +472 -0
  17. package/maverick-wave.min.css +1 -0
  18. package/maverick-wave.min.js +1 -0
  19. package/package.json +52 -0
  20. package/release.sh +17 -0
  21. package/src/assets/favicon/android-chrome-192x192.png +0 -0
  22. package/src/assets/favicon/android-chrome-512x512.png +0 -0
  23. package/src/assets/favicon/apple-touch-icon.png +0 -0
  24. package/src/assets/favicon/favicon-16x16.png +0 -0
  25. package/src/assets/favicon/favicon-32x32.png +0 -0
  26. package/src/assets/favicon/site.webmanifest +1 -0
  27. package/src/assets/favicon.ico +0 -0
  28. package/src/assets/header-logo.svg +24 -0
  29. package/src/js/main.js +587 -0
  30. package/src/partials/accordions-container.html +163 -0
  31. package/src/partials/alerts-container.html +120 -0
  32. package/src/partials/avatars-container.html +84 -0
  33. package/src/partials/blog-posts-container.html +157 -0
  34. package/src/partials/breadcrumbs-container.html +126 -0
  35. package/src/partials/button-bar-container.html +168 -0
  36. package/src/partials/buttons-container.html +133 -0
  37. package/src/partials/cards-container.html +508 -0
  38. package/src/partials/code-container.html +194 -0
  39. package/src/partials/colors-container.html +125 -0
  40. package/src/partials/coming-soon-container.html +6 -0
  41. package/src/partials/content-slider-container.html +47 -0
  42. package/src/partials/divider-container.html +52 -0
  43. package/src/partials/documentation-container.html +161 -0
  44. package/src/partials/empty-state-container.html +74 -0
  45. package/src/partials/footer-container.html +113 -0
  46. package/src/partials/form-container.html +257 -0
  47. package/src/partials/form-elements-container.html +595 -0
  48. package/src/partials/form-field-container.html +141 -0
  49. package/src/partials/gallery-container.html +49 -0
  50. package/src/partials/get-started-container.html +294 -0
  51. package/src/partials/grid-container.html +171 -0
  52. package/src/partials/header-container.html +49 -0
  53. package/src/partials/header-utilities-container.html +80 -0
  54. package/src/partials/home-container.html +48 -0
  55. package/src/partials/html-lists-container.html +58 -0
  56. package/src/partials/info-container.html +87 -0
  57. package/src/partials/input-group-container.html +285 -0
  58. package/src/partials/item-lists-container.html +413 -0
  59. package/src/partials/login-container.html +61 -0
  60. package/src/partials/meta-info-container.html +16 -0
  61. package/src/partials/modals-container.html +136 -0
  62. package/src/partials/pagination-container.html +27 -0
  63. package/src/partials/panels-container.html +196 -0
  64. package/src/partials/progress-container.html +226 -0
  65. package/src/partials/ratings-container.html +104 -0
  66. package/src/partials/skeleton-container.html +82 -0
  67. package/src/partials/spinners-container.html +92 -0
  68. package/src/partials/stepper-container.html +107 -0
  69. package/src/partials/tables-container.html +120 -0
  70. package/src/partials/tabs-container.html +263 -0
  71. package/src/partials/tags-container.html +168 -0
  72. package/src/partials/techstack-bucket-container.html +174 -0
  73. package/src/partials/tiles-container.html +245 -0
  74. package/src/partials/timelines-container.html +196 -0
  75. package/src/partials/typography-container.html +66 -0
  76. package/src/partials/utilities-container.html +85 -0
  77. package/src/scss/abstracts/_functions.scss +37 -0
  78. package/src/scss/abstracts/_index.scss +3 -0
  79. package/src/scss/abstracts/_mixins.scss +45 -0
  80. package/src/scss/abstracts/_variables.scss +222 -0
  81. package/src/scss/base/_base.scss +165 -0
  82. package/src/scss/base/_index.scss +3 -0
  83. package/src/scss/base/_reset.scss +75 -0
  84. package/src/scss/base/_typography.scss +230 -0
  85. package/src/scss/components/_accordions.scss +91 -0
  86. package/src/scss/components/_alerts.scss +105 -0
  87. package/src/scss/components/_avatars.scss +123 -0
  88. package/src/scss/components/_blog-post.scss +268 -0
  89. package/src/scss/components/_breadcrumbs.scss +108 -0
  90. package/src/scss/components/_button-bar.scss +139 -0
  91. package/src/scss/components/_buttons.scss +164 -0
  92. package/src/scss/components/_cards.scss +316 -0
  93. package/src/scss/components/_code.scss +252 -0
  94. package/src/scss/components/_coming-soon.scss +92 -0
  95. package/src/scss/components/_content-slider.scss +119 -0
  96. package/src/scss/components/_divider.scss +70 -0
  97. package/src/scss/components/_empty-state.scss +73 -0
  98. package/src/scss/components/_gallery.scss +158 -0
  99. package/src/scss/components/_index.scss +33 -0
  100. package/src/scss/components/_info.scss +143 -0
  101. package/src/scss/components/_lists.scss +653 -0
  102. package/src/scss/components/_localhost-indicator.scss +29 -0
  103. package/src/scss/components/_meta-info.scss +34 -0
  104. package/src/scss/components/_modals.scss +118 -0
  105. package/src/scss/components/_pagination.scss +99 -0
  106. package/src/scss/components/_panels.scss +112 -0
  107. package/src/scss/components/_progress.scss +107 -0
  108. package/src/scss/components/_ratings.scss +47 -0
  109. package/src/scss/components/_skeleton.scss +90 -0
  110. package/src/scss/components/_spinners.scss +208 -0
  111. package/src/scss/components/_stepper.scss +145 -0
  112. package/src/scss/components/_tables.scss +127 -0
  113. package/src/scss/components/_tabs.scss +146 -0
  114. package/src/scss/components/_tags.scss +93 -0
  115. package/src/scss/components/_techstack-bucket.scss +145 -0
  116. package/src/scss/components/_theme-toggle.scss +50 -0
  117. package/src/scss/components/_tiles.scss +217 -0
  118. package/src/scss/components/_timelines.scss +339 -0
  119. package/src/scss/form-elements/_checkbox.scss +174 -0
  120. package/src/scss/form-elements/_form.scss +122 -0
  121. package/src/scss/form-elements/_index.scss +10 -0
  122. package/src/scss/form-elements/_input-group.scss +103 -0
  123. package/src/scss/form-elements/_input.scss +72 -0
  124. package/src/scss/form-elements/_login.scss +62 -0
  125. package/src/scss/form-elements/_radio.scss +144 -0
  126. package/src/scss/form-elements/_select.scss +56 -0
  127. package/src/scss/form-elements/_slider.scss +174 -0
  128. package/src/scss/form-elements/_textarea.scss +74 -0
  129. package/src/scss/form-elements/_toggle.scss +174 -0
  130. package/src/scss/layout/_footer.scss +214 -0
  131. package/src/scss/layout/_grid.scss +287 -0
  132. package/src/scss/layout/_header.scss +441 -0
  133. package/src/scss/layout/_home.scss +40 -0
  134. package/src/scss/layout/_index.scss +6 -0
  135. package/src/scss/layout/_main.scss +116 -0
  136. package/src/scss/layout/_section.scss +89 -0
  137. package/src/scss/main.scss +5 -0
  138. package/src/scss/utilities/_display.scss +35 -0
  139. package/src/scss/utilities/_flex.scss +66 -0
  140. package/src/scss/utilities/_index.scss +3 -0
  141. package/src/scss/utilities/_spacing.scss +78 -0
@@ -0,0 +1,118 @@
1
+ @use '../abstracts' as *;
2
+
3
+ // Modal overlay - hidden by default
4
+ .mw-modal-overlay {
5
+ position: fixed;
6
+ top: 0;
7
+ left: 0;
8
+ right: 0;
9
+ bottom: 0;
10
+ background: var(--mw-gray-background);
11
+ backdrop-filter: blur(2px);
12
+ z-index: z-index('modal')-10;
13
+ display: none;
14
+ align-items: center;
15
+ justify-content: center;
16
+ padding: spacing('3');
17
+ opacity: 0;
18
+ transition: opacity 0.4s ease;
19
+
20
+ // Show modal when class is added
21
+ &.mw-modal-open {
22
+ display: flex;
23
+ opacity: 1;
24
+ }
25
+ }
26
+
27
+ // Modal container
28
+ .mw-modal {
29
+ background: var(--mw-card-background);
30
+ border-radius: radius('sm') radius('xl') radius('sm') radius('xl');
31
+ box-shadow: 0 25px 50px var(--mw-shadow);
32
+ max-width: 450px;
33
+ width: 100%;
34
+ max-height: 75vh;
35
+ display: flex;
36
+ flex-direction: column;
37
+ transform: scale(0.9) translateY(spacing('4'));
38
+ transition: transform 0.5s ease;
39
+ z-index: z-index('modal');
40
+
41
+ .mw-modal-open & {
42
+ transform: scale(1) translateY(0);
43
+ }
44
+
45
+ &.mw-modal-sm {
46
+ max-width: 350px;
47
+ max-height: 70vh;
48
+ }
49
+ &.mw-modal-lg {
50
+ max-width: 600px;
51
+ max-height: 80vh;
52
+ }
53
+ &.mw-modal-xl {
54
+ max-width: 790px;
55
+ max-height: 85vh;
56
+ }
57
+ }
58
+
59
+ // Modal sections
60
+ .mw-modal-header {
61
+ padding: spacing('3') spacing('5');
62
+ border-bottom: 1px solid var(--mw-primary-color-hover);
63
+ display: flex;
64
+ justify-content: space-between;
65
+ align-items: center;
66
+
67
+ h1,
68
+ h2,
69
+ h3,
70
+ h4,
71
+ h5 {
72
+ margin: spacing('0');
73
+ line-height: 1.2;
74
+ }
75
+ }
76
+
77
+ .mw-modal-body {
78
+ padding: spacing('4') spacing('5');
79
+ overflow-y: auto;
80
+ flex: 1;
81
+ }
82
+
83
+ .mw-modal-footer {
84
+ padding: spacing('3') spacing('5');
85
+ border-top: 1px solid var(--mw-primary-color-hover);
86
+ display: flex;
87
+ gap: spacing('2');
88
+ justify-content: flex-end;
89
+ }
90
+
91
+ // Close button
92
+ .mw-modal-close {
93
+ background: none;
94
+ font-size: font-size('md');
95
+ cursor: pointer;
96
+ padding: spacing('1') spacing('3');
97
+ border-radius: radius('sm');
98
+ border: 1px solid var(--mw-border);
99
+ display: flex;
100
+ align-items: center;
101
+ justify-content: center;
102
+ color: var(--mw-text-color);
103
+
104
+ &:hover {
105
+ background: var(--mw-primary-color-hover);
106
+ }
107
+ }
108
+
109
+ // Backdrop for click-outside-to-close
110
+ .mw-modal-backdrop {
111
+ position: absolute;
112
+ top: 0;
113
+ left: 0;
114
+ right: 0;
115
+ bottom: 0;
116
+ z-index: z-index('modal')-5;
117
+ cursor: pointer;
118
+ }
@@ -0,0 +1,99 @@
1
+ @use '../abstracts' as *;
2
+
3
+ .mw-pagination {
4
+ border: 1px solid var(--mw-border);
5
+ border-radius: radius('lg');
6
+ background: var(--mw-card-background);
7
+ overflow: hidden;
8
+
9
+ &-header {
10
+ display: flex;
11
+ align-items: center;
12
+ justify-content: space-between;
13
+ padding: spacing('3');
14
+ background: var(--mw-primary-color);
15
+ color: var(--mw-primary-text-color);
16
+ }
17
+
18
+ &-nav {
19
+ background: none;
20
+ color: var(--mw-primary-text-color);
21
+ cursor: pointer;
22
+ padding: spacing('2') spacing('3');
23
+ border-radius: radius('sm');
24
+ border: 1px solid var(--mw-primary-text-color);
25
+ display: flex;
26
+ align-items: center;
27
+ justify-content: center;
28
+ transition: background-color 0.2s ease;
29
+ font-size: font-size('lg');
30
+
31
+ &:hover {
32
+ background: var(--mw-primary-color-hover);
33
+ }
34
+
35
+ &:disabled {
36
+ opacity: 0.5;
37
+ cursor: not-allowed;
38
+ }
39
+ }
40
+
41
+ &-title {
42
+ flex: 1;
43
+ text-align: center;
44
+ font-weight: font-weight('medium');
45
+ font-size: font-size('lg');
46
+ margin: 0;
47
+ }
48
+
49
+ &-content {
50
+ padding: spacing('4');
51
+ min-height: 200px;
52
+ transition: all 0.3s ease;
53
+
54
+ &.mw-pagination-loading {
55
+ opacity: 0.6;
56
+ pointer-events: none;
57
+ }
58
+ }
59
+
60
+ @include media-down('sm') {
61
+ &-nav {
62
+ font-size: font-size('md');
63
+ }
64
+ &-title {
65
+ font-size: font-size('md');
66
+ }
67
+ }
68
+ }
69
+
70
+ // Optional: Add slide animation
71
+ .mw-pagination-slide-left {
72
+ animation: slideLeft 0.3s ease;
73
+ }
74
+
75
+ .mw-pagination-slide-right {
76
+ animation: slideRight 0.3s ease;
77
+ }
78
+
79
+ @keyframes slideLeft {
80
+ from {
81
+ transform: translateX(20px);
82
+ opacity: 0;
83
+ }
84
+ to {
85
+ transform: translateX(0);
86
+ opacity: 1;
87
+ }
88
+ }
89
+
90
+ @keyframes slideRight {
91
+ from {
92
+ transform: translateX(-20px);
93
+ opacity: 0;
94
+ }
95
+ to {
96
+ transform: translateX(0);
97
+ opacity: 1;
98
+ }
99
+ }
@@ -0,0 +1,112 @@
1
+ @use '../abstracts' as *;
2
+
3
+ .mw-panel {
4
+ background: var(--mw-card-background);
5
+ border-radius: radius('sm') radius('xl') radius('sm') radius('xl');
6
+ border: 2px solid var(--mw-border);
7
+ overflow: hidden;
8
+ display: flex;
9
+ flex-direction: column;
10
+ min-height: 100%;
11
+ margin: spacing('1');
12
+
13
+ &-header {
14
+ padding: spacing('3') spacing('5');
15
+ border-bottom: 1px solid var(--mw-primary-color-hover);
16
+ display: flex;
17
+ justify-content: space-between;
18
+ align-items: center;
19
+ margin: spacing('0');
20
+ }
21
+
22
+ &-body {
23
+ padding: spacing('3') spacing('5');
24
+ flex: 1;
25
+ overflow-y: auto;
26
+
27
+ // Scrollbar styling
28
+ &::-webkit-scrollbar {
29
+ width: 6px;
30
+ }
31
+
32
+ &::-webkit-scrollbar-track {
33
+ background: var(--mw-card-background);
34
+ border-radius: radius('sm');
35
+ }
36
+
37
+ &::-webkit-scrollbar-thumb {
38
+ background: var(--mw-primary-color-hover);
39
+ border-radius: radius('sm');
40
+ }
41
+ }
42
+
43
+ &-footer {
44
+ padding: spacing('3') spacing('5');
45
+ border-top: 1px solid var(--mw-primary-color-hover);
46
+ display: flex;
47
+ justify-content: flex-end;
48
+ gap: spacing('3');
49
+ }
50
+
51
+ // Panel variants
52
+ &-primary {
53
+ .mw-panel-header {
54
+ background: var(--mw-primary-color);
55
+ color: var(--mw-primary-text-color);
56
+ }
57
+ }
58
+
59
+ &-secondary {
60
+ .mw-panel-header {
61
+ background: var(--mw-secondary-color);
62
+ color: var(--mw-primary-text-color);
63
+ }
64
+ }
65
+
66
+ // Scrollable variant for fixed height
67
+ &-scrollable {
68
+ max-height: 500px;
69
+
70
+ .mw-panel-body {
71
+ overflow-y: auto;
72
+ max-height: calc(500px - 2 * spacing('4') - 2px);
73
+ }
74
+ }
75
+
76
+ // Scrollable variants for max height
77
+ &-max-height {
78
+ &-sm {
79
+ max-height: 300px;
80
+ .mw-panel-body {
81
+ max-height: calc(300px - 2 * spacing('4') - 2px);
82
+ overflow-y: auto;
83
+ }
84
+ }
85
+
86
+ &-md {
87
+ max-height: 500px;
88
+ .mw-panel-body {
89
+ max-height: calc(500px - 2 * spacing('4') - 2px);
90
+ overflow-y: auto;
91
+ }
92
+ }
93
+
94
+ &-lg {
95
+ max-height: 700px;
96
+ .mw-panel-body {
97
+ max-height: calc(700px - 2 * spacing('4') - 2px);
98
+ overflow-y: auto;
99
+ }
100
+ }
101
+ }
102
+
103
+ @include media-down('sm') {
104
+ font-size: font-size('sm');
105
+
106
+ &-header {
107
+ h3 {
108
+ font-size: font-size('sm');
109
+ }
110
+ }
111
+ }
112
+ }
@@ -0,0 +1,107 @@
1
+ @use '../abstracts' as *;
2
+
3
+ $_mw-progress-colors: (
4
+ primary: var(--mw-primary-color),
5
+ secondary: var(--mw-secondary-color),
6
+ info: var(--mw-info-color),
7
+ success: var(--mw-success-color),
8
+ warning: var(--mw-warning-color),
9
+ danger: var(--mw-danger-color),
10
+ );
11
+
12
+ .mw-progress {
13
+ &-container {
14
+ margin: spacing('1');
15
+ }
16
+
17
+ &-barinfo {
18
+ display: flex;
19
+ justify-content: space-between;
20
+ margin: spacing('3') spacing('2') spacing('1') spacing('1');
21
+ font-size: font-size('sm');
22
+
23
+ // hide info, if this class is available
24
+ &.mw-progress-hide-info {
25
+ display: none;
26
+ }
27
+ }
28
+
29
+ &-label {
30
+ font-weight: font-weight('medium');
31
+ }
32
+
33
+ &-value {
34
+ color: var(--mw-text-muted-color);
35
+ pointer-events: none;
36
+ align-content: end;
37
+
38
+ @include media-down('sm') {
39
+ font-size: font-size('xs');
40
+ }
41
+
42
+ // numeric values from 1-10
43
+ &.mw-progress-numeric {
44
+ &::after {
45
+ content: '/10';
46
+ }
47
+ }
48
+
49
+ // for percentage values
50
+ &.mw-progress-percent {
51
+ &::after {
52
+ content: '%';
53
+ }
54
+ }
55
+ }
56
+
57
+ &-bar {
58
+ width: 100%;
59
+ height: 10px;
60
+ background: var(--mw-gray-background);
61
+ opacity: 0.9;
62
+ border-radius: radius('sm');
63
+ overflow: hidden;
64
+ position: relative;
65
+ }
66
+
67
+ &-fill {
68
+ height: 100%;
69
+ background: var(--mw-secondary-color);
70
+ border-radius: radius('sm');
71
+ width: 0;
72
+ transition: width 1.9s ease-in-out;
73
+ }
74
+
75
+ // Sizes
76
+ &-sm .mw-progress-bar {
77
+ height: 6px;
78
+ border-radius: radius('sm');
79
+ }
80
+
81
+ &-lg .mw-progress-bar {
82
+ height: 16px;
83
+ border-radius: radius('lg');
84
+ }
85
+
86
+ // With inner label
87
+ &-inline-label {
88
+ .mw-progress-bar {
89
+ height: 24px;
90
+ }
91
+
92
+ .mw-progress-fill {
93
+ display: flex;
94
+ align-items: center;
95
+ padding-left: spacing('5');
96
+ font-size: font-size('xs');
97
+ font-weight: font-weight('medium');
98
+ color: var(--mw-primary-text-color);
99
+ }
100
+ }
101
+ }
102
+
103
+ @each $name, $col in $_mw-progress-colors {
104
+ .mw-progress-#{$name} {
105
+ background: #{$col};
106
+ }
107
+ }
@@ -0,0 +1,47 @@
1
+ @use '../abstracts' as *;
2
+
3
+ .mw-rating {
4
+ display: inline-flex;
5
+ gap: spacing('2');
6
+ font-size: font-size('2xl');
7
+ padding: spacing('2') spacing('4');
8
+
9
+ border: 1px solid var(--mw-border);
10
+ border-radius: radius('md');
11
+
12
+ &-container {
13
+ margin: spacing('1');
14
+ }
15
+
16
+ &-info {
17
+ display: flex;
18
+ justify-content: space-between;
19
+ margin: spacing('2') spacing('1') spacing('1') spacing('1');
20
+ font-size: font-size('md');
21
+ }
22
+
23
+ &-sm {
24
+ font-size: font-size('lg');
25
+ padding: spacing('2') spacing('3');
26
+ }
27
+
28
+ &-lg {
29
+ font-size: font-size('4xl');
30
+ padding: spacing('3') spacing('5');
31
+ }
32
+
33
+ &-icon {
34
+ color: var(--mw-gray-background);
35
+ transition: color var(--mw-transition);
36
+ pointer-events: none;
37
+ }
38
+ }
39
+
40
+ // fill first N icons based on data-rating
41
+ @for $i from 1 through 5 {
42
+ .mw-rating[data-rating='#{$i}'] {
43
+ & .mw-rating-icon:nth-child(-n + #{$i}) {
44
+ color: var(--mw-primary-color);
45
+ }
46
+ }
47
+ }
@@ -0,0 +1,90 @@
1
+ @use '../abstracts' as *;
2
+
3
+ @keyframes mw-skeleton-shimmer {
4
+ 0% {
5
+ background-position: -200% 0;
6
+ }
7
+ 100% {
8
+ background-position: 200% 0;
9
+ }
10
+ }
11
+
12
+ // Base skeleton element
13
+ .mw-skeleton {
14
+ background: linear-gradient(
15
+ 90deg,
16
+ var(--mw-card-background) 25%,
17
+ var(--mw-gray-background) 50%,
18
+ var(--mw-card-background) 75%
19
+ );
20
+ background-size: 200% 100%;
21
+ animation: mw-skeleton-shimmer 1.5s infinite linear;
22
+ border-radius: radius('sm');
23
+ display: block;
24
+ }
25
+
26
+ // Text line
27
+ .mw-skeleton-text {
28
+ height: 1em;
29
+ width: 100%;
30
+ margin-bottom: spacing('2');
31
+
32
+ &:last-child {
33
+ width: 65%;
34
+ }
35
+ }
36
+
37
+ // Heading
38
+ .mw-skeleton-title {
39
+ height: 1.4em;
40
+ width: 45%;
41
+ margin-bottom: spacing('3');
42
+ }
43
+
44
+ // Circle (avatar placeholder)
45
+ .mw-skeleton-circle {
46
+ border-radius: radius('full');
47
+ width: spacing('8');
48
+ height: spacing('8');
49
+ flex-shrink: 0;
50
+ }
51
+
52
+ // Rectangle (image/banner placeholder)
53
+ .mw-skeleton-rect {
54
+ width: 100%;
55
+ height: 180px;
56
+ }
57
+
58
+ // Size variants for rect
59
+ .mw-skeleton-rect-sm {
60
+ height: 100px;
61
+ }
62
+
63
+ .mw-skeleton-rect-lg {
64
+ height: 260px;
65
+ }
66
+
67
+ // Card wrapper with built-in padding and border
68
+ .mw-skeleton-card {
69
+ display: flex;
70
+ flex-direction: column;
71
+ gap: spacing('2');
72
+ padding: spacing('4');
73
+ background: var(--mw-card-background);
74
+ border: 1px solid var(--mw-border);
75
+ border-radius: radius('md');
76
+ }
77
+
78
+ // Row layout helper (avatar + text lines side by side)
79
+ .mw-skeleton-row {
80
+ display: flex;
81
+ align-items: flex-start;
82
+ gap: spacing('3');
83
+
84
+ .mw-skeleton-body {
85
+ flex: 1;
86
+ display: flex;
87
+ flex-direction: column;
88
+ gap: spacing('2');
89
+ }
90
+ }