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,165 @@
1
+ @use 'sass:map';
2
+ @use '../abstracts' as *;
3
+
4
+ // CSS Variables for theming and overriding
5
+ :root {
6
+ // Base colors
7
+ --mw-primary-color: #{map.get($base-colors, 'primary-color')};
8
+ --mw-primary-color-hover: #{map.get($base-colors, 'primary-color-hover')};
9
+ --mw-primary-background: #{map.get($base-colors, 'primary-background')};
10
+ --mw-primary-background-hover: #{map.get(
11
+ $base-colors,
12
+ 'primary-background-hover'
13
+ )};
14
+ --mw-primary-info-background: #{map.get(
15
+ $base-colors,
16
+ 'primary-info-background'
17
+ )};
18
+ --mw-primary-text-color: #{map.get($base-colors, 'primary-text-color')};
19
+ --mw-secondary-color: #{map.get($base-colors, 'secondary-color')};
20
+ --mw-secondary-color-hover: #{map.get($base-colors, 'secondary-color-hover')};
21
+ --mw-secondary-background: #{map.get($base-colors, 'secondary-background')};
22
+ --mw-secondary-background-hover: #{map.get(
23
+ $base-colors,
24
+ 'secondary-background-hover'
25
+ )};
26
+ --mw-secondary-info-background: #{map.get(
27
+ $base-colors,
28
+ 'secondary-info-background'
29
+ )};
30
+ --mw-secondary-text-color: #{map.get($base-colors, 'secondary-text-color')};
31
+ --mw-white-color: #{map.get($base-colors, 'white-color')};
32
+ --mw-gray-color: #{map.get($base-colors, 'gray-color')};
33
+ --mw-gray-background: #{map.get($base-colors, 'gray-background')};
34
+ --mw-section-alternate-pattern: #{map.get(
35
+ $base-colors,
36
+ 'section-alternate-pattern'
37
+ )};
38
+
39
+ // form
40
+ --mw-form-elements-background: #{map.get(
41
+ $base-colors,
42
+ 'form-elements-background'
43
+ )};
44
+ --mw-form-elements-color: #{map.get($base-colors, 'form-elements-color')};
45
+
46
+ // Status colors
47
+ --mw-success-color: #{map.get($status-colors, 'success-color')};
48
+ --mw-success-info-background: #{map.get(
49
+ $status-colors,
50
+ 'success-info-background'
51
+ )};
52
+ --mw-success-info-background-hover: #{map.get(
53
+ $status-colors,
54
+ 'success-info-background-hover'
55
+ )};
56
+ --mw-warning-color: #{map.get($status-colors, 'warning-color')};
57
+ --mw-warning-info-background: #{map.get(
58
+ $status-colors,
59
+ 'warning-info-background'
60
+ )};
61
+ --mw-danger-color: #{map.get($status-colors, 'danger-color')};
62
+ --mw-danger-info-background: #{map.get(
63
+ $status-colors,
64
+ 'danger-info-background'
65
+ )};
66
+ --mw-info-color: #{map.get($status-colors, 'info-color')};
67
+ --mw-info-info-background: #{map.get($status-colors, 'info-info-background')};
68
+ --mw-info-info-background-hover: #{map.get(
69
+ $status-colors,
70
+ 'info-info-background-hover'
71
+ )};
72
+
73
+ // Header/navbar colors (they are fixed, but you can change them separately)
74
+ --mw-header-background: #{map.get($dark-theme-colors, 'footer-background')};
75
+ --mw-header-navbar-list-color: #{map.get(
76
+ $dark-theme-colors,
77
+ 'text-muted-color'
78
+ )};
79
+ --mw-header-navbar-list-active-color: #{map.get(
80
+ $base-colors,
81
+ 'primary-color'
82
+ )};
83
+ --mw-header-burgerbutton-color: #{map.get($dark-theme-colors, 'text-color')};
84
+ --mw-header-border: #{map.get($base-colors, 'primary-color-hover')};
85
+
86
+ // Dark theme colors
87
+ --mw-dark-page-background: #{map.get($dark-theme-colors, 'page-background')};
88
+ --mw-dark-hero-overlay-background: #{map.get(
89
+ $dark-theme-colors,
90
+ 'hero-overlay-background'
91
+ )};
92
+ --mw-dark-card-background: #{map.get($dark-theme-colors, 'card-background')};
93
+ --mw-dark-footer-background: #{map.get(
94
+ $dark-theme-colors,
95
+ 'footer-background'
96
+ )};
97
+ --mw-dark-border: #{map.get($dark-theme-colors, 'border')};
98
+ --mw-dark-shadow: #{map.get($dark-theme-colors, 'shadow')};
99
+ --mw-dark-text-color: #{map.get($dark-theme-colors, 'text-color')};
100
+ --mw-dark-text-muted-color: #{map.get($dark-theme-colors, 'text-muted-color')};
101
+
102
+ // Light theme colors
103
+ --mw-light-page-background: #{map.get($light-theme-colors, 'page-background')};
104
+ --mw-light-hero-overlay-background: #{map.get(
105
+ $light-theme-colors,
106
+ 'hero-overlay-background'
107
+ )};
108
+ --mw-light-card-background: #{map.get($light-theme-colors, 'card-background')};
109
+ --mw-light-footer-background: #{map.get(
110
+ $light-theme-colors,
111
+ 'footer-background'
112
+ )};
113
+ --mw-light-border: #{map.get($light-theme-colors, 'border')};
114
+ --mw-light-shadow: #{map.get($light-theme-colors, 'shadow')};
115
+ --mw-light-text-color: #{map.get($light-theme-colors, 'text-color')};
116
+ --mw-light-text-muted-color: #{map.get(
117
+ $light-theme-colors,
118
+ 'text-muted-color'
119
+ )};
120
+
121
+ // Transitions
122
+ --mw-transition: #{$transition-default};
123
+
124
+ // theme for theme-toggle
125
+ --mw-internal-theme-mode: #{$mw-theme-mode};
126
+
127
+ // hero background image
128
+ --mw-hero-background: #{$mw-hero-image};
129
+
130
+ @if $mw-theme-mode == 'dark' or $mw-theme-mode == 'switchable' {
131
+ // Dark theme variables
132
+ --mw-page-background: var(--mw-dark-page-background);
133
+ --mw-hero-overlay-background: var(--mw-dark-hero-overlay-background);
134
+ --mw-card-background: var(--mw-dark-card-background);
135
+ --mw-footer-background: var(--mw-dark-footer-background);
136
+ --mw-border: var(--mw-dark-border);
137
+ --mw-shadow: var(--mw-dark-shadow);
138
+ --mw-text-color: var(--mw-dark-text-color);
139
+ --mw-text-muted-color: var(--mw-dark-text-muted-color);
140
+ } @else {
141
+ // Light theme variables
142
+ --mw-page-background: var(--mw-light-page-background);
143
+ --mw-hero-overlay-background: var(--mw-light-hero-overlay-background);
144
+ --mw-card-background: var(--mw-light-card-background);
145
+ --mw-footer-background: var(--mw-light-footer-background);
146
+ --mw-border: var(--mw-light-border);
147
+ --mw-shadow: var(--mw-light-shadow);
148
+ --mw-text-color: var(--mw-light-text-color);
149
+ --mw-text-muted-color: var(--mw-light-text-muted-color);
150
+ }
151
+ }
152
+
153
+ @if $mw-theme-mode == 'switchable' {
154
+ .mw-theme-light {
155
+ // Light theme variables for switching
156
+ --mw-page-background: var(--mw-light-page-background);
157
+ --mw-hero-overlay-background: var(--mw-light-hero-overlay-background);
158
+ --mw-card-background: var(--mw-light-card-background);
159
+ --mw-footer-background: var(--mw-light-footer-background);
160
+ --mw-border: var(--mw-light-border);
161
+ --mw-shadow: var(--mw-light-shadow);
162
+ --mw-text-color: var(--mw-light-text-color);
163
+ --mw-text-muted-color: var(--mw-light-text-muted-color);
164
+ }
165
+ }
@@ -0,0 +1,3 @@
1
+ @forward 'reset';
2
+ @forward 'base';
3
+ @forward 'typography';
@@ -0,0 +1,75 @@
1
+ *,
2
+ *::before,
3
+ *::after {
4
+ margin: 0;
5
+ padding: 0;
6
+ box-sizing: border-box;
7
+ }
8
+
9
+ html {
10
+ scroll-behavior: smooth;
11
+ min-width: 360px;
12
+ scroll-padding-top: 70px;
13
+ }
14
+
15
+ body {
16
+ font-family: var(--mw-font-family-base);
17
+ background: var(--mw-page-background);
18
+ color: var(--mw-text-color);
19
+ line-height: 1.6;
20
+
21
+ &:has(.mw-modal-open) {
22
+ overflow: hidden;
23
+ height: 100vh;
24
+ }
25
+ }
26
+
27
+ a {
28
+ text-decoration: none;
29
+ color: var(--mw-text-muted-color);
30
+ transition: var(--mw-transition);
31
+ }
32
+
33
+ ul {
34
+ list-style: none;
35
+ }
36
+
37
+ hr {
38
+ margin: 15px 0;
39
+ color: var(--mw-text-muted-color);
40
+ }
41
+
42
+ img {
43
+ max-width: 100%;
44
+ height: auto;
45
+ display: block;
46
+ }
47
+
48
+ button {
49
+ background: none;
50
+ border: none;
51
+ cursor: pointer;
52
+ font-family: inherit;
53
+ }
54
+
55
+ input,
56
+ textarea {
57
+ font-family: inherit;
58
+ }
59
+
60
+ table,
61
+ th,
62
+ td {
63
+ border: 1px solid var(--mw-border);
64
+ border-collapse: collapse;
65
+ padding: 3px 8px;
66
+ text-align: left;
67
+ tr:nth-child(even) {
68
+ background: var(--mw-gray-background);
69
+ }
70
+ }
71
+
72
+ th {
73
+ background: var(--mw-primary-color);
74
+ color: var(--mw-primary-text-color);
75
+ }
@@ -0,0 +1,230 @@
1
+ @use '../abstracts' as *;
2
+
3
+ // System Font Stacks
4
+ $font-family-base:
5
+ -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu,
6
+ Cantarell, 'Helvetica Neue', sans-serif;
7
+
8
+ $font-family-heading:
9
+ system-ui,
10
+ -apple-system,
11
+ BlinkMacSystemFont,
12
+ 'Segoe UI',
13
+ Roboto,
14
+ 'Helvetica Neue',
15
+ Arial,
16
+ sans-serif;
17
+
18
+ $font-family-mono:
19
+ SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New',
20
+ monospace;
21
+
22
+ :root {
23
+ --mw-font-family-base: #{$font-family-base};
24
+ --mw-font-family-heading: #{$font-family-heading};
25
+ --mw-font-family-mono: #{$font-family-mono};
26
+ }
27
+
28
+ // Base font settings
29
+ body {
30
+ font-family: var(--mw-font-family-base);
31
+ line-height: 1.5;
32
+ color: var(--mw-text-color);
33
+ }
34
+
35
+ // Headings
36
+ h1,
37
+ h2,
38
+ h3,
39
+ h4,
40
+ h5,
41
+ h6 {
42
+ font-family: var(--mw-font-family-heading);
43
+ line-height: 1.2;
44
+ margin-bottom: spacing('4');
45
+ font-weight: font-weight('bold');
46
+ }
47
+
48
+ h1 {
49
+ font-size: font-size('5xl');
50
+
51
+ @include media-down('sm') {
52
+ font-size: font-size('3xl');
53
+ }
54
+ }
55
+
56
+ h2 {
57
+ font-size: font-size('4xl');
58
+
59
+ @include media-down('sm') {
60
+ font-size: font-size('2xl');
61
+ }
62
+ }
63
+
64
+ h3 {
65
+ font-size: font-size('xl');
66
+
67
+ &.mw-accent {
68
+ color: var(--mw-primary-color);
69
+ }
70
+ }
71
+
72
+ h4 {
73
+ font-size: font-size('lg');
74
+ }
75
+
76
+ h5 {
77
+ font-size: font-size('md');
78
+ font-weight: font-weight('medium');
79
+ }
80
+
81
+ h6 {
82
+ font-size: font-size('sm');
83
+ font-weight: font-weight('medium');
84
+ }
85
+
86
+ // Paragraphs
87
+ p {
88
+ margin-bottom: spacing('3');
89
+ }
90
+
91
+ // Code elements
92
+ code,
93
+ pre,
94
+ kbd {
95
+ font-family: var(--mw-font-family-mono);
96
+ }
97
+
98
+ pre {
99
+ border: 1px solid var(--mw-border);
100
+ background: var(--mw-card-background);
101
+ margin-bottom: 6px;
102
+ }
103
+
104
+ code {
105
+ white-space: pre-wrap;
106
+ word-break: break-word;
107
+ }
108
+
109
+ blockquote {
110
+ color: var(--mw-secondary-color);
111
+ font-style: italic;
112
+ position: relative;
113
+ padding: spacing('4');
114
+ margin: spacing('2') spacing('1');
115
+ border-left: 2px solid var(--mw-secondary-background-hover);
116
+ border-radius: radius('none') radius('sm') radius('sm') radius('none');
117
+ background: color-mix(
118
+ in srgb,
119
+ var(--mw-secondary-background) 85%,
120
+ transparent
121
+ );
122
+
123
+ &:hover {
124
+ &::before,
125
+ &::after {
126
+ opacity: 0.7;
127
+ }
128
+ }
129
+
130
+ &::before,
131
+ &::after {
132
+ font-family: Georgia, serif;
133
+ font-size: font-size('5xl');
134
+ position: absolute;
135
+ opacity: 0.4;
136
+ line-height: 1;
137
+ }
138
+
139
+ &::before {
140
+ content: '"';
141
+ top: spacing('-2');
142
+ left: spacing('1');
143
+ }
144
+
145
+ &::after {
146
+ content: '"';
147
+ bottom: spacing('-5');
148
+ right: spacing('2');
149
+ }
150
+ }
151
+
152
+ // Text utilities
153
+ .mw-text {
154
+ &-center {
155
+ text-align: center;
156
+ }
157
+
158
+ &-left {
159
+ text-align: left;
160
+ }
161
+
162
+ &-right {
163
+ text-align: right;
164
+ }
165
+
166
+ &-primary {
167
+ color: var(--mw-primary-color);
168
+ }
169
+
170
+ &-secondary {
171
+ color: var(--mw-secondary-color);
172
+ }
173
+
174
+ &-danger {
175
+ color: var(--mw-danger-color);
176
+ }
177
+
178
+ &-muted {
179
+ color: var(--mw-text-muted-color);
180
+ }
181
+
182
+ &-bold {
183
+ font-weight: font-weight('bold');
184
+ }
185
+
186
+ &-medium {
187
+ font-weight: font-weight('medium');
188
+ }
189
+
190
+ &-normal {
191
+ font-weight: font-weight('normal');
192
+ }
193
+
194
+ &-light {
195
+ font-weight: font-weight('light');
196
+ }
197
+
198
+ &-italic {
199
+ font-style: italic;
200
+ }
201
+
202
+ &-color-dark {
203
+ color: var(--mw-dark-text-color);
204
+ }
205
+
206
+ &-color-light {
207
+ color: var(--mw-light-text-color);
208
+ }
209
+
210
+ @each $name, $size in $font-sizes {
211
+ &-#{$name} {
212
+ font-size: $size;
213
+ }
214
+ }
215
+ }
216
+
217
+ // Line height utilities
218
+ .mw-leading {
219
+ &-tight {
220
+ line-height: 1.2;
221
+ }
222
+
223
+ &-normal {
224
+ line-height: 1.5;
225
+ }
226
+
227
+ &-loose {
228
+ line-height: 1.8;
229
+ }
230
+ }
@@ -0,0 +1,91 @@
1
+ @use '../abstracts' as *;
2
+
3
+ .mw-accordion {
4
+ border: 1px solid var(--mw-border);
5
+ border-radius: radius('sm') radius('xl') radius('sm') radius('xl');
6
+ overflow: hidden;
7
+ margin: spacing('1');
8
+
9
+ &-item {
10
+ border-bottom: 1px solid var(--mw-primary-color-hover);
11
+
12
+ &:last-child {
13
+ border-bottom: none;
14
+ }
15
+ }
16
+
17
+ &-header {
18
+ padding: spacing('4');
19
+ background: var(--mw-card-background);
20
+ cursor: pointer;
21
+ display: flex;
22
+ justify-content: space-between;
23
+ align-items: center;
24
+ transition: var(--mw-transition);
25
+
26
+ &:hover {
27
+ background: var(--mw-primary-background-hover);
28
+ }
29
+
30
+ h3 {
31
+ margin: spacing('0');
32
+ font-size: font-size('md');
33
+ font-weight: font-weight('medium');
34
+
35
+ @include media-down('sm') {
36
+ font-size: font-size('sm');
37
+ }
38
+ }
39
+
40
+ .mw-accordion-icon {
41
+ transition: var(--mw-transition);
42
+ transform: rotate(0deg);
43
+ }
44
+
45
+ &.active {
46
+ background: var(--mw-primary-color);
47
+ color: var(--mw-primary-text-color);
48
+
49
+ .mw-accordion-icon {
50
+ transform: rotate(180deg);
51
+ }
52
+ }
53
+ }
54
+
55
+ &-content {
56
+ height: spacing('0');
57
+ overflow: hidden;
58
+ transition: height 0.9s ease;
59
+ background: var(--mw-card-background);
60
+ interpolate-size: allow-keywords;
61
+
62
+ &-inner {
63
+ padding: spacing('4');
64
+ border-top: 1px solid var(--mw-primary-color-hover);
65
+ @include media-down('sm') {
66
+ font-size: font-size('sm');
67
+ }
68
+ }
69
+
70
+ &.active {
71
+ height: auto;
72
+ max-height: 500px;
73
+ overflow-y: auto;
74
+
75
+ // Scrollbar styling
76
+ &::-webkit-scrollbar {
77
+ width: 6px;
78
+ }
79
+
80
+ &::-webkit-scrollbar-track {
81
+ background: var(--mw-card-background);
82
+ border-radius: radius('sm');
83
+ }
84
+
85
+ &::-webkit-scrollbar-thumb {
86
+ background: var(--mw-primary-color-hover);
87
+ border-radius: radius('sm');
88
+ }
89
+ }
90
+ }
91
+ }
@@ -0,0 +1,105 @@
1
+ @use '../abstracts' as *;
2
+
3
+ .mw-alert {
4
+ position: relative;
5
+ overflow: hidden;
6
+
7
+ display: flex;
8
+ align-items: flex-start;
9
+
10
+ padding: spacing('3') spacing('4');
11
+ margin-bottom: spacing('4');
12
+ border-radius: radius('md');
13
+
14
+ background: var(--mw-card-background);
15
+ border: 1px solid var(--mw-border);
16
+ box-shadow: 0 2px 5px var(--mw-shadow);
17
+
18
+ &-icon,
19
+ &-content,
20
+ .mw-alert-close {
21
+ position: relative;
22
+ z-index: z-index('alert') + 5;
23
+ }
24
+
25
+ &-icon {
26
+ flex-shrink: 0;
27
+ margin-right: spacing('3');
28
+ font-size: font-size('xl');
29
+ line-height: 1.2;
30
+ margin-top: spacing('1');
31
+ }
32
+
33
+ &-content {
34
+ flex: 1;
35
+ color: var(--mw-text-color);
36
+ }
37
+
38
+ &-title {
39
+ display: block;
40
+ font-weight: font-weight('bold');
41
+ margin-bottom: spacing('1');
42
+ line-height: 1.3;
43
+ }
44
+
45
+ // Text in body
46
+ p {
47
+ margin: 0;
48
+ line-height: 1.5;
49
+ font-size: font-size('sm');
50
+ opacity: 0.9;
51
+
52
+ & + p {
53
+ margin-top: spacing('2');
54
+ }
55
+ }
56
+
57
+ &-closed {
58
+ display: none !important;
59
+ }
60
+
61
+ @include media-down('sm') {
62
+ padding: spacing('2');
63
+ &-icon {
64
+ margin-right: spacing('2');
65
+ }
66
+ }
67
+ }
68
+
69
+ // Close button
70
+ .mw-alert-close {
71
+ flex-shrink: 0;
72
+ margin-left: spacing('3');
73
+ }
74
+
75
+ // Color mapping
76
+ $_mw-alert-colors: (
77
+ primary: var(--mw-primary-color),
78
+ secondary: var(--mw-secondary-color),
79
+ info: var(--mw-info-color),
80
+ success: var(--mw-success-color),
81
+ warning: var(--mw-warning-color),
82
+ danger: var(--mw-danger-color),
83
+ );
84
+
85
+ // Color variants
86
+ @each $name, $col in $_mw-alert-colors {
87
+ .mw-alert-#{$name} {
88
+ border: 1px solid rgba($col, 0.2);
89
+ border-left: 4px solid #{$col};
90
+
91
+ // Color layer
92
+ &::before {
93
+ content: '';
94
+ position: absolute;
95
+ inset: 0;
96
+ background: var(--mw-#{$name}-info-background);
97
+ z-index: z-index('alert');
98
+ pointer-events: none;
99
+ }
100
+
101
+ .mw-alert-icon {
102
+ color: #{$col};
103
+ }
104
+ }
105
+ }