@hashtagcms/themes 1.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 (65) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +143 -0
  3. package/package.json +45 -0
  4. package/src/core/js/bootstrap.js +36 -0
  5. package/src/core/js/components/subscribe.js +54 -0
  6. package/src/core/js/helpers/common.js +20 -0
  7. package/src/core/js/helpers/form.js +192 -0
  8. package/src/core/js/utils/analytics.js +85 -0
  9. package/src/themes/basic/fonts/FontAwesome.otf +0 -0
  10. package/src/themes/basic/fonts/fontawesome-webfont.eot +0 -0
  11. package/src/themes/basic/fonts/fontawesome-webfont.svg +2671 -0
  12. package/src/themes/basic/fonts/fontawesome-webfont.ttf +0 -0
  13. package/src/themes/basic/fonts/fontawesome-webfont.woff +0 -0
  14. package/src/themes/basic/fonts/fontawesome-webfont.woff2 +0 -0
  15. package/src/themes/basic/img/clouds.jpg +0 -0
  16. package/src/themes/basic/img/cms-box-1.png +0 -0
  17. package/src/themes/basic/img/cms-box-2.png +0 -0
  18. package/src/themes/basic/img/dfd.png +0 -0
  19. package/src/themes/basic/img/favicon.png +0 -0
  20. package/src/themes/basic/img/hasshtagcms-product-1.jpg +0 -0
  21. package/src/themes/basic/img/hasshtagcms-product-2.jpg +0 -0
  22. package/src/themes/basic/img/hasshtagcms-product-bg.jpg +0 -0
  23. package/src/themes/basic/img/hasshtagcms-product-with-text.jpg +0 -0
  24. package/src/themes/basic/img/hill.jpg +0 -0
  25. package/src/themes/basic/img/logo-transparent.png +0 -0
  26. package/src/themes/basic/img/logo-white-bg.jpg +0 -0
  27. package/src/themes/basic/img/qr-code.jpg +0 -0
  28. package/src/themes/basic/img/sunset.jpg +0 -0
  29. package/src/themes/basic/img/sunset2.jpg +0 -0
  30. package/src/themes/basic/img/user-default.jpg +0 -0
  31. package/src/themes/basic/js/app.js +23 -0
  32. package/src/themes/basic/sass/_basic.scss +410 -0
  33. package/src/themes/basic/sass/_variables.scss +12 -0
  34. package/src/themes/basic/sass/animate.css +1579 -0
  35. package/src/themes/basic/sass/app.scss +10 -0
  36. package/src/themes/basic/sass/font-awesome/HELP-US-OUT.txt +7 -0
  37. package/src/themes/basic/sass/font-awesome/css/font-awesome.css +2337 -0
  38. package/src/themes/basic/sass/font-awesome/css/font-awesome.min.css +4 -0
  39. package/src/themes/basic/sass/font-awesome/fonts/FontAwesome.otf +0 -0
  40. package/src/themes/basic/sass/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  41. package/src/themes/basic/sass/font-awesome/fonts/fontawesome-webfont.svg +2671 -0
  42. package/src/themes/basic/sass/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  43. package/src/themes/basic/sass/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  44. package/src/themes/basic/sass/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
  45. package/src/themes/basic/sass/font-awesome/scss/_animated.scss +34 -0
  46. package/src/themes/basic/sass/font-awesome/scss/_bordered-pulled.scss +25 -0
  47. package/src/themes/basic/sass/font-awesome/scss/_core.scss +12 -0
  48. package/src/themes/basic/sass/font-awesome/scss/_fixed-width.scss +6 -0
  49. package/src/themes/basic/sass/font-awesome/scss/_icons.scss +789 -0
  50. package/src/themes/basic/sass/font-awesome/scss/_larger.scss +13 -0
  51. package/src/themes/basic/sass/font-awesome/scss/_list.scss +19 -0
  52. package/src/themes/basic/sass/font-awesome/scss/_mixins.scss +60 -0
  53. package/src/themes/basic/sass/font-awesome/scss/_path.scss +15 -0
  54. package/src/themes/basic/sass/font-awesome/scss/_rotated-flipped.scss +20 -0
  55. package/src/themes/basic/sass/font-awesome/scss/_screen-reader.scss +5 -0
  56. package/src/themes/basic/sass/font-awesome/scss/_stacked.scss +20 -0
  57. package/src/themes/basic/sass/font-awesome/scss/_variables.scss +799 -0
  58. package/src/themes/basic/sass/font-awesome/scss/font-awesome.scss +18 -0
  59. package/src/themes/elegant/img/feature-ai.png +0 -0
  60. package/src/themes/elegant/img/feature-cloud.png +0 -0
  61. package/src/themes/elegant/img/hero-bg.png +0 -0
  62. package/src/themes/elegant/js/app.js +126 -0
  63. package/src/themes/elegant/sass/_elegant.scss +508 -0
  64. package/src/themes/elegant/sass/_variables.scss +42 -0
  65. package/src/themes/elegant/sass/app.scss +14 -0
@@ -0,0 +1,18 @@
1
+ /*!
2
+ * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
3
+ * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
4
+ */
5
+
6
+ @import "variables";
7
+ @import "mixins";
8
+ @import "path";
9
+ @import "core";
10
+ @import "larger";
11
+ @import "fixed-width";
12
+ @import "list";
13
+ @import "bordered-pulled";
14
+ @import "animated";
15
+ @import "rotated-flipped";
16
+ @import "stacked";
17
+ @import "icons";
18
+ @import "screen-reader";
@@ -0,0 +1,126 @@
1
+ import axios from "axios";
2
+ axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
3
+ let token = document.head.querySelector('meta[name="csrf-token"]');
4
+ if (token) {
5
+ axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
6
+ axios.defaults.headers.common['Authorization'] = 'Bearer ' + token.content;
7
+ axios.defaults.withCredentials = true;
8
+ } else {
9
+ console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');
10
+ }
11
+ window.axios = axios;
12
+
13
+
14
+ import Analytics from "../../../core/js/utils/analytics";
15
+ import Subscribe from "../../../core/js/components/subscribe";
16
+ import { AppConfig } from "../../../core/js/helpers/common";
17
+
18
+
19
+ window.HashtagCms = { configData: {} };
20
+ window.HashtagCms.Subscribe = new Subscribe();
21
+ window.HashtagCms.Analytics = new Analytics();
22
+ window.HashtagCms.AppConfig = new AppConfig();
23
+
24
+ /**
25
+ * Elegant Theme - Modern Tech Aesthetic
26
+ *
27
+ * Features:
28
+ * - Smooth scroll animations
29
+ * - Parallax effects
30
+ * - Modern card interactions
31
+ * - Dynamic Navbar
32
+ */
33
+
34
+ class ElegantTheme {
35
+ constructor() {
36
+ this.initSubscribe();
37
+ this.initSmoothScroll();
38
+ this.initParallax();
39
+ this.initCardAnimations();
40
+ this.initNavbar();
41
+ console.log('Elegant Theme loaded');
42
+ }
43
+
44
+ initSubscribe() {
45
+ const subscribeElement = document.getElementById('subscribe-form');
46
+ if (subscribeElement) {
47
+ new Subscribe(subscribeElement);
48
+ }
49
+ }
50
+
51
+ initNavbar() {
52
+ const navbar = document.querySelector('.navbar');
53
+ if (navbar) {
54
+ window.addEventListener('scroll', () => {
55
+ if (window.scrollY > 50) {
56
+ navbar.classList.add('scrolled');
57
+ } else {
58
+ navbar.classList.remove('scrolled');
59
+ }
60
+ });
61
+ // Initial check
62
+ if (window.scrollY > 50) {
63
+ navbar.classList.add('scrolled');
64
+ }
65
+ }
66
+ }
67
+
68
+ initSmoothScroll() {
69
+ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
70
+ anchor.addEventListener('click', function (e) {
71
+ const href = this.getAttribute('href');
72
+ if (href && href !== '#' && href !== '#!') {
73
+ e.preventDefault();
74
+ const target = document.querySelector(href);
75
+ if (target) {
76
+ target.scrollIntoView({
77
+ behavior: 'smooth',
78
+ block: 'start'
79
+ });
80
+ }
81
+ }
82
+ });
83
+ });
84
+ }
85
+
86
+ initParallax() {
87
+ const parallaxElements = document.querySelectorAll('.parallax');
88
+
89
+ if (parallaxElements.length > 0) {
90
+ window.addEventListener('scroll', () => {
91
+ const scrolled = window.pageYOffset;
92
+
93
+ parallaxElements.forEach(element => {
94
+ const speed = element.dataset.speed || 0.5;
95
+ element.style.transform = `translateY(${scrolled * speed}px)`;
96
+ });
97
+ });
98
+ }
99
+ }
100
+
101
+ initCardAnimations() {
102
+ const cards = document.querySelectorAll('.feature-card, .tech-card, .card'); // Added generic .card
103
+
104
+ if (cards.length > 0) {
105
+ const observer = new IntersectionObserver((entries) => {
106
+ entries.forEach(entry => {
107
+ if (entry.isIntersecting) {
108
+ entry.target.classList.add('animate-in');
109
+ observer.unobserve(entry.target); // Only animate once
110
+ }
111
+ });
112
+ }, {
113
+ threshold: 0.1
114
+ });
115
+
116
+ cards.forEach(card => observer.observe(card));
117
+ }
118
+ }
119
+ }
120
+
121
+ // Initialize theme when DOM is ready
122
+ if (document.readyState === 'loading') {
123
+ document.addEventListener('DOMContentLoaded', () => new ElegantTheme());
124
+ } else {
125
+ new ElegantTheme();
126
+ }
@@ -0,0 +1,508 @@
1
+ /**
2
+ * Elegant Theme - Modern Tech Aesthetic
3
+ * Sophisticated design for technology-focused websites
4
+ */
5
+
6
+ // Import Google Fonts (if not imported in app.scss, but here for reference)
7
+ // @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
8
+
9
+ // Base Styles
10
+ * {
11
+ box-sizing: border-box;
12
+ }
13
+
14
+ body {
15
+ font-family: $font-primary;
16
+ background: linear-gradient(135deg, $primary-dark 0%, $primary-blue 100%);
17
+ background-attachment: fixed;
18
+ color: $text-primary;
19
+ line-height: 1.7;
20
+ overflow-x: hidden;
21
+ }
22
+
23
+ // Typography
24
+ h1,
25
+ h2,
26
+ h3,
27
+ h4,
28
+ h5,
29
+ h6 {
30
+ font-weight: 600;
31
+ letter-spacing: -0.02em;
32
+ color: $text-primary;
33
+ }
34
+
35
+ h1 {
36
+ font-size: 3.5rem;
37
+ font-weight: 700;
38
+ background: linear-gradient(135deg, $accent-cyan, $accent-purple);
39
+ -webkit-background-clip: text;
40
+ -webkit-text-fill-color: transparent;
41
+ background-clip: text;
42
+ margin-bottom: 1.5rem;
43
+ }
44
+
45
+ h2 {
46
+ font-size: 2.5rem;
47
+ margin-bottom: 2rem;
48
+ }
49
+
50
+ // Navigation Overrides (for basic theme compatibility)
51
+ .navbar {
52
+ background: rgba($surface-dark, 0.8) !important; // Override bg-light
53
+ backdrop-filter: blur(12px);
54
+ -webkit-backdrop-filter: blur(12px);
55
+ border-bottom: 1px solid rgba($accent-cyan, 0.1);
56
+ padding: 1rem 0;
57
+ transition: $transition-smooth;
58
+
59
+ &.bg-light {
60
+ background: rgba($surface-dark, 0.8) !important;
61
+ }
62
+
63
+ &.scrolled {
64
+ background: rgba($surface-dark, 0.95) !important;
65
+ box-shadow: $shadow-elegant;
66
+ padding: 0.75rem 0;
67
+ }
68
+
69
+ .navbar-brand {
70
+ color: $accent-cyan !important;
71
+ font-weight: 700;
72
+ font-size: 1.5rem;
73
+ letter-spacing: -0.02em;
74
+ text-transform: uppercase;
75
+
76
+ &:hover {
77
+ color: $white !important;
78
+ text-shadow: $glow-cyan;
79
+ }
80
+ }
81
+
82
+ .nav-link {
83
+ color: $text-secondary !important;
84
+ font-weight: 500;
85
+ transition: $transition-smooth;
86
+ position: relative;
87
+ padding: 0.5rem 1rem !important;
88
+
89
+ &::after {
90
+ content: '';
91
+ position: absolute;
92
+ bottom: 5px;
93
+ left: 50%;
94
+ width: 0;
95
+ height: 2px;
96
+ background: $accent-cyan;
97
+ transition: $transition-smooth;
98
+ transform: translateX(-50%);
99
+ }
100
+
101
+ &:hover,
102
+ &.active {
103
+ color: $accent-cyan !important;
104
+
105
+ &::after {
106
+ width: 80%;
107
+ }
108
+ }
109
+
110
+ i {
111
+ margin-right: 5px;
112
+ }
113
+ }
114
+
115
+ .navbar-toggler {
116
+ border-color: rgba($accent-cyan, 0.3);
117
+
118
+ .navbar-toggler-icon {
119
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(0, 212, 255, 1)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
120
+ }
121
+ }
122
+ }
123
+
124
+ // Hero Section (Basic Theme Compatibility)
125
+ .hero {
126
+ min-height: 80vh; // Adjusted for better initial view
127
+ display: flex;
128
+ align-items: center;
129
+ position: relative;
130
+ overflow: hidden;
131
+
132
+ &::before {
133
+ content: '';
134
+ position: absolute;
135
+ top: 0;
136
+ left: 0;
137
+ right: 0;
138
+ bottom: 0;
139
+ background:
140
+ radial-gradient(circle at 20% 50%, rgba($accent-cyan, 0.15) 0%, transparent 50%),
141
+ radial-gradient(circle at 80% 80%, rgba($accent-purple, 0.15) 0%, transparent 50%);
142
+ pointer-events: none;
143
+ z-index: 0;
144
+ }
145
+
146
+ .hero-inner {
147
+ position: relative;
148
+ z-index: 2;
149
+ width: 100%;
150
+ padding: 4rem 0;
151
+
152
+ /* Fallback backgrounds if basic theme uses them */
153
+ &.hero-bg-1 {
154
+ background: linear-gradient(45deg, rgba($primary-dark, 0.9), rgba($primary-blue, 0.8));
155
+ }
156
+
157
+ &.hero-bg-2 {
158
+ background: linear-gradient(to right, rgba($surface-dark, 0.95), rgba($surface-dark, 0.7));
159
+ }
160
+ }
161
+
162
+ .hero-text {
163
+ animation: fadeInUp 0.8s ease-out;
164
+
165
+ h1,
166
+ h2 {
167
+ font-size: 3.5rem;
168
+ margin-bottom: 1.5rem;
169
+ line-height: 1.2;
170
+
171
+ @media (max-width: 768px) {
172
+ font-size: 2.5rem;
173
+ }
174
+ }
175
+
176
+ p {
177
+ font-size: 1.25rem;
178
+ color: $text-secondary;
179
+ margin-bottom: 2rem;
180
+ line-height: 1.6;
181
+ }
182
+
183
+ .btn {
184
+ margin-right: 1rem;
185
+ margin-bottom: 1rem;
186
+ }
187
+ }
188
+
189
+ // Default hero styles if classes are missing
190
+ .hero-title {
191
+ font-size: 4rem;
192
+ margin-bottom: 1.5rem;
193
+ animation: fadeInUp 0.8s ease-out;
194
+ }
195
+
196
+ .hero-subtitle {
197
+ font-size: 1.5rem;
198
+ color: $text-secondary;
199
+ margin-bottom: 2rem;
200
+ animation: fadeInUp 0.8s ease-out 0.2s both;
201
+ }
202
+ }
203
+
204
+ // Feature/Content Cards
205
+ .features-section,
206
+ .section {
207
+ padding: $section-padding 0;
208
+ position: relative;
209
+ }
210
+
211
+ .feature-card,
212
+ .tech-card,
213
+ .card {
214
+ background: rgba($surface-light, 0.5);
215
+ backdrop-filter: blur(10px);
216
+ border: 1px solid rgba($accent-cyan, 0.1);
217
+ border-radius: $card-radius;
218
+ padding: 2rem;
219
+ transition: $transition-smooth;
220
+ margin-bottom: 1.5rem;
221
+
222
+ // "Basic" theme might use standard cards
223
+ &.card-body {
224
+ background: transparent;
225
+ }
226
+
227
+ &:hover {
228
+ transform: translateY(-5px);
229
+ border-color: rgba($accent-cyan, 0.3);
230
+ box-shadow: $shadow-elegant;
231
+ background: rgba($surface-light, 0.7);
232
+
233
+ .icon {
234
+ transform: scale(1.1) rotate(5deg);
235
+ }
236
+ }
237
+
238
+ .icon {
239
+ width: 60px;
240
+ height: 60px;
241
+ background: linear-gradient(135deg, $accent-cyan, $accent-purple);
242
+ border-radius: 12px;
243
+ display: flex;
244
+ align-items: center;
245
+ justify-content: center;
246
+ margin-bottom: 1.5rem;
247
+ font-size: 1.75rem;
248
+ color: white;
249
+ transition: $transition-smooth;
250
+ }
251
+
252
+ h3,
253
+ .card-title {
254
+ font-size: 1.5rem;
255
+ margin-bottom: 1rem;
256
+ color: $text-primary;
257
+ }
258
+
259
+ p,
260
+ .card-text {
261
+ color: $text-secondary;
262
+ line-height: 1.6;
263
+ }
264
+ }
265
+
266
+ // Buttons
267
+ .btn {
268
+ padding: 0.75rem 1.75rem;
269
+ font-weight: 600;
270
+ border-radius: 50px;
271
+ letter-spacing: 0.02em;
272
+ transition: $transition-smooth;
273
+
274
+ &-primary {
275
+ background: linear-gradient(135deg, $accent-cyan, $accent-purple);
276
+ border: none;
277
+ color: white;
278
+ box-shadow: 0 4px 15px rgba($accent-cyan, 0.3);
279
+
280
+ &:hover {
281
+ transform: translateY(-2px);
282
+ box-shadow: 0 6px 20px rgba($accent-cyan, 0.5);
283
+ color: white;
284
+ }
285
+ }
286
+
287
+ &-outline-primary {
288
+ background: transparent;
289
+ border: 2px solid $accent-cyan;
290
+ color: $accent-cyan;
291
+
292
+ &:hover {
293
+ background: $accent-cyan;
294
+ color: $surface-dark;
295
+ transform: translateY(-2px);
296
+ }
297
+ }
298
+
299
+ &-link {
300
+ color: $accent-cyan;
301
+ text-decoration: none;
302
+
303
+ &:hover {
304
+ color: lighten($accent-cyan, 10%);
305
+ }
306
+ }
307
+ }
308
+
309
+ // Code Blocks
310
+ pre,
311
+ code {
312
+ font-family: $font-mono;
313
+ }
314
+
315
+ pre {
316
+ background: rgba(0, 0, 0, 0.5);
317
+ border: 1px solid rgba($accent-cyan, 0.1);
318
+ border-radius: 8px;
319
+ padding: 1.5rem;
320
+ overflow-x: auto;
321
+
322
+ code {
323
+ color: inherit;
324
+ background: none;
325
+ border: none;
326
+ }
327
+ }
328
+
329
+ code {
330
+ background: rgba($accent-cyan, 0.1);
331
+ color: $accent-cyan;
332
+ padding: 0.2em 0.4em;
333
+ border-radius: 4px;
334
+ font-size: 0.9em;
335
+ }
336
+
337
+ // Sections & Titles
338
+ .section-title {
339
+ text-align: center;
340
+ margin-bottom: 4rem;
341
+ position: relative;
342
+
343
+ h2 {
344
+ display: inline-block;
345
+ background: linear-gradient(to right, $text-primary, $text-secondary);
346
+ -webkit-background-clip: text;
347
+ -webkit-text-fill-color: transparent;
348
+ margin-bottom: 0.5rem;
349
+ }
350
+
351
+ &::after {
352
+ content: '';
353
+ display: block;
354
+ width: 60px;
355
+ height: 4px;
356
+ background: linear-gradient(90deg, $accent-cyan, $accent-purple);
357
+ margin: 1rem auto 0;
358
+ border-radius: 2px;
359
+ }
360
+ }
361
+
362
+ // Footer
363
+ footer.footer {
364
+ background: rgba($surface-dark, 0.9);
365
+ border-top: 1px solid rgba($accent-cyan, 0.1);
366
+ padding: 4rem 0 2rem;
367
+ margin-top: 5rem;
368
+ position: relative;
369
+
370
+ &::before {
371
+ content: '';
372
+ position: absolute;
373
+ top: 0;
374
+ left: 0;
375
+ width: 100%;
376
+ height: 1px;
377
+ background: linear-gradient(90deg, transparent, $accent-cyan, transparent);
378
+ opacity: 0.5;
379
+ }
380
+
381
+ .widget-title {
382
+ color: $white;
383
+ font-weight: 700;
384
+ margin-bottom: 1.5rem;
385
+ font-size: 1.25rem;
386
+ }
387
+
388
+ .list-footer {
389
+ list-style: none;
390
+ padding: 0;
391
+
392
+ li {
393
+ margin-bottom: 0.75rem;
394
+
395
+ a {
396
+ color: $text-secondary;
397
+ transition: $transition-smooth;
398
+ text-decoration: none;
399
+ display: inline-block;
400
+
401
+ &:hover {
402
+ color: $accent-cyan;
403
+ transform: translateX(5px);
404
+ }
405
+ }
406
+ }
407
+ }
408
+
409
+ .socials {
410
+ display: flex;
411
+ gap: 1rem;
412
+
413
+ a {
414
+ display: inline-flex;
415
+ align-items: center;
416
+ justify-content: center;
417
+ width: 40px;
418
+ height: 40px;
419
+ border-radius: 50%;
420
+ background: rgba($surface-light, 0.5);
421
+ color: $text-secondary;
422
+ transition: $transition-smooth;
423
+ border: 1px solid rgba($white, 0.1);
424
+
425
+ &:hover {
426
+ background: linear-gradient(135deg, $accent-cyan, $accent-purple);
427
+ color: white;
428
+ transform: translateY(-3px);
429
+ border-color: transparent;
430
+ box-shadow: $glow-cyan;
431
+ }
432
+ }
433
+ }
434
+
435
+ .copyright {
436
+ margin-top: 3rem;
437
+ padding-top: 2rem;
438
+ border-top: 1px solid rgba($white, 0.05);
439
+ color: darken($text-secondary, 10%);
440
+ font-size: 0.9rem;
441
+
442
+ a {
443
+ color: $text-secondary;
444
+
445
+ &:hover {
446
+ color: $accent-cyan;
447
+ }
448
+ }
449
+ }
450
+ }
451
+
452
+ // Animations
453
+ @keyframes fadeInUp {
454
+ from {
455
+ opacity: 0;
456
+ transform: translateY(30px);
457
+ }
458
+
459
+ to {
460
+ opacity: 1;
461
+ transform: translateY(0);
462
+ }
463
+ }
464
+
465
+ .animate-in {
466
+ animation: fadeInUp 0.6s ease-out forwards;
467
+ }
468
+
469
+ // Utility Classes
470
+ .gradient-text {
471
+ background: linear-gradient(135deg, $accent-cyan, $accent-purple);
472
+ -webkit-background-clip: text;
473
+ -webkit-text-fill-color: transparent;
474
+ background-clip: text;
475
+ }
476
+
477
+ .glass-panel {
478
+ background: rgba($surface-light, 0.6);
479
+ backdrop-filter: blur(10px);
480
+ border: 1px solid rgba($accent-cyan, 0.1);
481
+ border-radius: $card-radius;
482
+ padding: 2rem;
483
+ }
484
+
485
+ // Responsive
486
+ @media (max-width: 768px) {
487
+ h1 {
488
+ font-size: 2.5rem;
489
+ }
490
+
491
+ h2 {
492
+ font-size: 2rem;
493
+ }
494
+
495
+ .hero {
496
+ text-align: center;
497
+
498
+ .btn {
499
+ display: block;
500
+ width: 100%;
501
+ margin: 0 0 1rem 0;
502
+ }
503
+ }
504
+
505
+ .section {
506
+ padding: 60px 0;
507
+ }
508
+ }
@@ -0,0 +1,42 @@
1
+ // Elegant Theme Variables
2
+ // Modern, sophisticated color palette for tech sites
3
+
4
+ // Color Palette - Deep Blues & Accents
5
+ $primary-dark: #0a1929;
6
+ $primary-blue: #1e3a5f;
7
+ $accent-cyan: #00d4ff;
8
+ $accent-purple: #6366f1;
9
+ $text-primary: #e8eaed;
10
+ $text-secondary: #9ca3af;
11
+ $surface-dark: #111827;
12
+ $surface-light: #1f2937;
13
+
14
+ // Typography
15
+ $font-primary: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
16
+ $font-mono: 'JetBrains Mono', 'Fira Code', monospace;
17
+
18
+ // Spacing & Layout
19
+ $container-max: 1280px;
20
+ $section-padding: 120px;
21
+ $card-radius: 16px;
22
+
23
+ // Effects
24
+ $transition-smooth: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
25
+ $shadow-elegant: 0 20px 60px rgba(0, 0, 0, 0.3);
26
+ $glow-cyan: 0 0 20px rgba(0, 212, 255, 0.3);
27
+
28
+ // Bootstrap Overrides
29
+ $body-bg: $primary-dark;
30
+ $body-color: $text-primary;
31
+ $font-family-sans-serif: $font-primary;
32
+ $font-family-monospace: $font-mono;
33
+
34
+ $theme-colors: (
35
+ "primary": $accent-cyan,
36
+ "secondary": $accent-purple,
37
+ "dark": $surface-dark,
38
+ "light": $surface-light
39
+ );
40
+
41
+ $link-color: $accent-cyan;
42
+ $link-hover-color: lighten($accent-cyan, 10%);
@@ -0,0 +1,14 @@
1
+ // Elegant Theme - Main Entry Point
2
+ // Modern tech aesthetic with sophisticated design
3
+
4
+ // Import Google Fonts
5
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
6
+
7
+ // Theme Variables
8
+ @import "variables";
9
+
10
+ // Bootstrap Framework
11
+ @import '~bootstrap/scss/bootstrap';
12
+
13
+ // Theme Styles
14
+ @import "elegant";