ultimate-jekyll-manager 1.0.5 → 1.0.6
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.
- package/dist/assets/themes/elegant/README.md +75 -0
- package/dist/assets/themes/elegant/_config.scss +189 -0
- package/dist/assets/themes/elegant/_theme.js +36 -0
- package/dist/assets/themes/elegant/_theme.scss +34 -0
- package/dist/assets/themes/elegant/css/base/_animations.scss +27 -0
- package/dist/assets/themes/elegant/css/base/_backgrounds.scss +191 -0
- package/dist/assets/themes/elegant/css/base/_borders.scss +65 -0
- package/dist/assets/themes/elegant/css/base/_root.scss +58 -0
- package/dist/assets/themes/elegant/css/base/_typography.scss +155 -0
- package/dist/assets/themes/elegant/css/base/_utilities.scss +15 -0
- package/dist/assets/themes/elegant/css/components/_accordion.scss +44 -0
- package/dist/assets/themes/elegant/css/components/_badges.scss +25 -0
- package/dist/assets/themes/elegant/css/components/_buttons.scss +264 -0
- package/dist/assets/themes/elegant/css/components/_cards.scss +33 -0
- package/dist/assets/themes/elegant/css/components/_carousel.scss +41 -0
- package/dist/assets/themes/elegant/css/components/_forms.scss +150 -0
- package/dist/assets/themes/elegant/css/components/_infinite-scroll.scss +140 -0
- package/dist/assets/themes/elegant/css/components/_text.scss +53 -0
- package/dist/assets/themes/elegant/css/layout/_backend.scss +59 -0
- package/dist/assets/themes/elegant/css/layout/_blog.scss +42 -0
- package/dist/assets/themes/elegant/css/layout/_general.scss +142 -0
- package/dist/assets/themes/elegant/css/layout/_navigation.scss +602 -0
- package/dist/assets/themes/elegant/css/layout/_team.scss +18 -0
- package/dist/assets/themes/elegant/js/hero-demo-form.js +42 -0
- package/dist/assets/themes/elegant/js/infinite-scroll.js +139 -0
- package/dist/assets/themes/elegant/js/initialize-tooltips.js +20 -0
- package/dist/assets/themes/elegant/js/navbar-scroll.js +65 -0
- package/dist/defaults/dist/_includes/themes/elegant/admin/sections/sidebar.html +3 -0
- package/dist/defaults/dist/_includes/themes/elegant/admin/sections/topbar.html +3 -0
- package/dist/defaults/dist/_includes/themes/elegant/backend/sections/sidebar.html +347 -0
- package/dist/defaults/dist/_includes/themes/elegant/backend/sections/topbar.html +184 -0
- package/dist/defaults/dist/_includes/themes/elegant/frontend/components/testimonial-scroll.html +84 -0
- package/dist/defaults/dist/_includes/themes/elegant/frontend/sections/footer.html +158 -0
- package/dist/defaults/dist/_includes/themes/elegant/frontend/sections/nav.html +276 -0
- package/dist/defaults/dist/_includes/themes/elegant/global/sections/account.html +72 -0
- package/dist/defaults/dist/_layouts/themes/elegant/admin/core/minimal-viewport-locked.html +31 -0
- package/dist/defaults/dist/_layouts/themes/elegant/admin/core/minimal.html +32 -0
- package/dist/defaults/dist/_layouts/themes/elegant/backend/core/base.html +55 -0
- package/dist/defaults/dist/_layouts/themes/elegant/backend/core/minimal-viewport-locked.html +149 -0
- package/dist/defaults/dist/_layouts/themes/elegant/backend/core/minimal.html +149 -0
- package/dist/defaults/dist/_layouts/themes/elegant/backend/pages/dashboard/index.html +247 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/core/base.html +32 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/core/cover.html +41 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/core/minimal.html +42 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/404.html +68 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/about.html +338 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/account/index.html +1639 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/alternatives/alternative.html +583 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/alternatives/index.html +353 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/app.html +83 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/auth/oauth2.html +62 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/auth/reset.html +81 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/auth/signin.html +109 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/auth/signup.html +121 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/auth/token.html +42 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/blog/categories/category.html +152 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/blog/categories/index.html +94 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/blog/index.html +381 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/blog/post.html +312 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/blog/tags/index.html +90 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/blog/tags/tag.html +153 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/contact.html +338 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/download.html +967 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/extension/index.html +436 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/extension/installed.html +188 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/feedback.html +201 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/index.html +699 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/payment/checkout.html +516 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/payment/confirmation.html +98 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/portal/email-preferences.html +108 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/pricing.html +852 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/status.html +388 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/team/index.html +204 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/team/member.html +151 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/updates/index.html +128 -0
- package/dist/defaults/dist/_layouts/themes/elegant/frontend/pages/updates/update.html +122 -0
- package/package.json +1 -1
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# elegant Theme Customization Guide
|
|
2
|
+
|
|
3
|
+
## How to Customize in Your Consuming Project
|
|
4
|
+
|
|
5
|
+
The elegant theme is designed to be fully customizable. All theme variables use `!default` which means you can override them BEFORE importing the theme.
|
|
6
|
+
|
|
7
|
+
### Example: Customizing Colors in Your Project
|
|
8
|
+
|
|
9
|
+
In your consuming project's `src/assets/css/main.scss`:
|
|
10
|
+
|
|
11
|
+
```scss
|
|
12
|
+
// 1. Override elegant theme variables BEFORE importing the theme
|
|
13
|
+
$primary: #FF0000; // Change primary color to red
|
|
14
|
+
$elegant-bg-light: #F5F5F5; // Change light mode background
|
|
15
|
+
$elegant-bg-dark: #1A1A1A; // Change dark mode background
|
|
16
|
+
$font-family-sans-serif: 'Inter', sans-serif; // Change font
|
|
17
|
+
|
|
18
|
+
// 2. Now import the elegant theme - it will use YOUR values
|
|
19
|
+
@import '~ultimate-jekyll-manager/src/assets/themes/elegant/theme';
|
|
20
|
+
|
|
21
|
+
// 3. Add your custom styles below
|
|
22
|
+
.my-custom-class {
|
|
23
|
+
// Your custom CSS
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Available Customizable Variables
|
|
28
|
+
|
|
29
|
+
See `_config.scss` for the full list of variables you can override:
|
|
30
|
+
|
|
31
|
+
### Bootstrap Colors
|
|
32
|
+
- `$primary` - Primary brand color
|
|
33
|
+
- `$secondary` - Secondary color
|
|
34
|
+
- `$success`, `$info`, `$warning`, `$danger` - Utility colors
|
|
35
|
+
- `$light`, `$dark` - Light and dark variants
|
|
36
|
+
|
|
37
|
+
### Background Colors
|
|
38
|
+
- `$elegant-bg-light` - Light mode background
|
|
39
|
+
- `$elegant-bg-dark` - Dark mode background
|
|
40
|
+
|
|
41
|
+
### Typography
|
|
42
|
+
- `$font-family-sans-serif` - Main font family
|
|
43
|
+
- `$headings-font-weight` - Heading font weight
|
|
44
|
+
|
|
45
|
+
### Border Radius
|
|
46
|
+
- `$border-radius` - Default border radius
|
|
47
|
+
- `$border-radius-sm`, `$border-radius-lg` - Size variants
|
|
48
|
+
|
|
49
|
+
### Gradients
|
|
50
|
+
- `$elegant-gradient-primary`, `$elegant-gradient-aurora`, etc.
|
|
51
|
+
|
|
52
|
+
## File Structure
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
elegant/
|
|
56
|
+
├── _config.scss ← All customizable variables with !default
|
|
57
|
+
├── _theme.scss ← Main entry point, imports config then Bootstrap
|
|
58
|
+
├── css/base/
|
|
59
|
+
│ ├── _variables.scss ← Internal non-customizable values
|
|
60
|
+
│ └── _root.scss ← CSS custom property overrides
|
|
61
|
+
└── ...
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## How It Works
|
|
65
|
+
|
|
66
|
+
1. **`_config.scss`**: Defines all variables with `!default` (can be overridden)
|
|
67
|
+
2. **Your `main.scss`**: Sets custom values BEFORE importing theme
|
|
68
|
+
3. **`_theme.scss`**: Imports config (uses your values or defaults), then Bootstrap
|
|
69
|
+
4. **`_root.scss`**: Converts SCSS variables to CSS custom properties for runtime
|
|
70
|
+
|
|
71
|
+
This ensures:
|
|
72
|
+
- ✅ You can customize anything
|
|
73
|
+
- ✅ Bootstrap gets configured with your colors
|
|
74
|
+
- ✅ CSS custom properties update for light/dark mode
|
|
75
|
+
- ✅ No need to modify theme files
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
// elegant Theme Configuration
|
|
2
|
+
// ALL customizable variables are defined here with !default
|
|
3
|
+
// Consuming projects can override any of these using @use ... with ()
|
|
4
|
+
|
|
5
|
+
// ============================================
|
|
6
|
+
// Bootstrap Color Overrides
|
|
7
|
+
// ============================================
|
|
8
|
+
$primary: #1A1A23 !default;
|
|
9
|
+
$secondary: #6C757D !default;
|
|
10
|
+
$success: #10B981 !default;
|
|
11
|
+
$info: #00D4FF !default;
|
|
12
|
+
$warning: #FFB800 !default;
|
|
13
|
+
$danger: #DC3545 !default;
|
|
14
|
+
$light: #F8F9FA !default;
|
|
15
|
+
$dark: #1A1A23 !default;
|
|
16
|
+
|
|
17
|
+
// ============================================
|
|
18
|
+
// Typography
|
|
19
|
+
// ============================================
|
|
20
|
+
$font-family-sans-serif: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif !default;
|
|
21
|
+
$headings-font-weight: 700 !default;
|
|
22
|
+
$elegant-font-mono: monospace !default;
|
|
23
|
+
$elegant-font-accent: 'Playfair Display', serif !default;
|
|
24
|
+
// $elegant-font-accent: 'DM Serif Display', serif !default;
|
|
25
|
+
// $elegant-font-accent: 'Crimson Pro', serif !default;
|
|
26
|
+
|
|
27
|
+
// ============================================
|
|
28
|
+
// Border Radius
|
|
29
|
+
// ============================================
|
|
30
|
+
$border-radius: 0.25rem !default;
|
|
31
|
+
$border-radius-sm: 0.375rem !default;
|
|
32
|
+
$border-radius-lg: 0.75rem !default;
|
|
33
|
+
$border-radius-xl: 1rem !default;
|
|
34
|
+
$border-radius-2xl: 1.5rem !default;
|
|
35
|
+
$border-radius-pill: 50rem !default;
|
|
36
|
+
|
|
37
|
+
// elegant-specific border radius aliases
|
|
38
|
+
$elegant-radius-sm: $border-radius-sm !default;
|
|
39
|
+
$elegant-radius-md: $border-radius !default;
|
|
40
|
+
$elegant-radius-lg: $border-radius-lg !default;
|
|
41
|
+
$elegant-radius-xl: $border-radius-xl !default;
|
|
42
|
+
$elegant-radius-2xl: $border-radius-2xl !default;
|
|
43
|
+
$elegant-radius-full: 9999px !default;
|
|
44
|
+
|
|
45
|
+
// ============================================
|
|
46
|
+
// Background Colors (Light Mode)
|
|
47
|
+
// ============================================
|
|
48
|
+
$elegant-bg-light: #ffffff !default; // Main body background
|
|
49
|
+
$elegant-bg-light-secondary: #f6f6f6 !default; // Secondary backgrounds (cards, sidebars)
|
|
50
|
+
$elegant-bg-light-tertiary: #f0f0f0 !default; // Tertiary backgrounds (hover states)
|
|
51
|
+
|
|
52
|
+
// ============================================
|
|
53
|
+
// Background Colors (Dark Mode)
|
|
54
|
+
// ============================================
|
|
55
|
+
$elegant-bg-dark: #121212 !default; // Main body background
|
|
56
|
+
$elegant-bg-dark-secondary: #171717 !default; // Secondary backgrounds (cards, sidebars)
|
|
57
|
+
$elegant-bg-dark-tertiary: #212121 !default; // Tertiary backgrounds (hover states)
|
|
58
|
+
|
|
59
|
+
// ============================================
|
|
60
|
+
// elegant-Specific Colors
|
|
61
|
+
// ============================================
|
|
62
|
+
$elegant-primary: $primary !default;
|
|
63
|
+
$elegant-primary-dark: darken($primary, 10%) !default;
|
|
64
|
+
$elegant-primary-light: lighten($primary, 10%) !default;
|
|
65
|
+
$elegant-primary-soft: mix($primary, white, 10%) !default;
|
|
66
|
+
|
|
67
|
+
$elegant-secondary: $secondary !default;
|
|
68
|
+
$elegant-secondary-dark: darken($secondary, 5%) !default;
|
|
69
|
+
$elegant-secondary-light: lighten($secondary, 5%) !default;
|
|
70
|
+
|
|
71
|
+
$elegant-accent: $info !default;
|
|
72
|
+
$elegant-accent-dark: darken($info, 10%) !default;
|
|
73
|
+
$elegant-accent-light: lighten($info, 10%) !default;
|
|
74
|
+
|
|
75
|
+
$elegant-dark: $dark !default;
|
|
76
|
+
$elegant-dark-900: lighten($dark, 5%) !default;
|
|
77
|
+
$elegant-dark-800: lighten($dark, 10%) !default;
|
|
78
|
+
$elegant-dark-700: lighten($dark, 15%) !default;
|
|
79
|
+
$elegant-dark-600: lighten($dark, 20%) !default;
|
|
80
|
+
|
|
81
|
+
$elegant-gray: #6B7280 !default;
|
|
82
|
+
$elegant-gray-light: #9CA3AF !default;
|
|
83
|
+
$elegant-gray-lighter: #D1D5DB !default;
|
|
84
|
+
$elegant-gray-lightest: #F3F4F6 !default;
|
|
85
|
+
|
|
86
|
+
$elegant-white: #FFFFFF !default;
|
|
87
|
+
$elegant-off-white: #FAFBFC !default;
|
|
88
|
+
$elegant-cream: #FFF9F5 !default;
|
|
89
|
+
|
|
90
|
+
// ============================================
|
|
91
|
+
// Gradient Definitions
|
|
92
|
+
// ============================================
|
|
93
|
+
$elegant-gradient-primary: linear-gradient(135deg, $elegant-primary 0%, $elegant-accent 100%) !default;
|
|
94
|
+
$elegant-gradient-dark: linear-gradient(135deg, $elegant-dark 0%, $elegant-dark-800 100%) !default;
|
|
95
|
+
$elegant-gradient-light: linear-gradient(135deg, $elegant-white 0%, $elegant-off-white 100%) !default;
|
|
96
|
+
$elegant-gradient-sunset: linear-gradient(135deg, #FF6B6B 0%, #FFB84D 100%) !default;
|
|
97
|
+
$elegant-gradient-aurora: linear-gradient(135deg, #5B47FB 0%, #00D4FF 50%, #FF6B6B 100%) !default;
|
|
98
|
+
$elegant-gradient-rainbow: linear-gradient(60deg, #f79533, #f37055, #ef4e7b, #a166ab, #5073b8, #1098ad, #07b39b, #6fba82) !default;
|
|
99
|
+
|
|
100
|
+
// ============================================
|
|
101
|
+
// Typography Scale
|
|
102
|
+
// ============================================
|
|
103
|
+
$elegant-font-size-xs: 0.75rem !default;
|
|
104
|
+
$elegant-font-size-sm: 0.875rem !default;
|
|
105
|
+
$elegant-font-size-base: 1rem !default;
|
|
106
|
+
$elegant-font-size-lg: 1.125rem !default;
|
|
107
|
+
$elegant-font-size-xl: 1.25rem !default;
|
|
108
|
+
$elegant-font-size-2xl: 1.5rem !default;
|
|
109
|
+
$elegant-font-size-3xl: 1.875rem !default;
|
|
110
|
+
$elegant-font-size-4xl: 2.25rem !default;
|
|
111
|
+
$elegant-font-size-5xl: 3rem !default;
|
|
112
|
+
$elegant-font-size-6xl: 3.75rem !default;
|
|
113
|
+
|
|
114
|
+
// ============================================
|
|
115
|
+
// Spacing Scale
|
|
116
|
+
// ============================================
|
|
117
|
+
$elegant-spacing-xs: 0.25rem !default;
|
|
118
|
+
$elegant-spacing-sm: 0.5rem !default;
|
|
119
|
+
$elegant-spacing-md: 1rem !default;
|
|
120
|
+
$elegant-spacing-lg: 1.5rem !default;
|
|
121
|
+
$elegant-spacing-xl: 2rem !default;
|
|
122
|
+
$elegant-spacing-2xl: 3rem !default;
|
|
123
|
+
$elegant-spacing-3xl: 4rem !default;
|
|
124
|
+
$elegant-spacing-4xl: 6rem !default;
|
|
125
|
+
|
|
126
|
+
// ============================================
|
|
127
|
+
// Shadow System
|
|
128
|
+
// ============================================
|
|
129
|
+
$elegant-shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !default;
|
|
130
|
+
$elegant-shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !default;
|
|
131
|
+
$elegant-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !default;
|
|
132
|
+
$elegant-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !default;
|
|
133
|
+
$elegant-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !default;
|
|
134
|
+
$elegant-shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !default;
|
|
135
|
+
$elegant-shadow-glow: 0 0 40px rgba(91, 71, 251, 0.15) !default;
|
|
136
|
+
|
|
137
|
+
// ============================================
|
|
138
|
+
// Transition Timing
|
|
139
|
+
// ============================================
|
|
140
|
+
$elegant-transition-fast: all 0.15s cubic-bezier(.2,.3,0,1) !default;
|
|
141
|
+
$elegant-transition-base: all 0.3s cubic-bezier(.2,.3,0,1) !default;
|
|
142
|
+
$elegant-transition-slow: all 0.5s cubic-bezier(.2,.3,0,1) !default;
|
|
143
|
+
$elegant-transition-bounce: all 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55) !default;
|
|
144
|
+
|
|
145
|
+
// ============================================
|
|
146
|
+
// Responsive Breakpoints
|
|
147
|
+
// ============================================
|
|
148
|
+
// Bootstrap-compatible breakpoint values
|
|
149
|
+
$elegant-breakpoint-sm: 576px !default;
|
|
150
|
+
$elegant-breakpoint-md: 768px !default;
|
|
151
|
+
$elegant-breakpoint-lg: 992px !default;
|
|
152
|
+
$elegant-breakpoint-xl: 1200px !default;
|
|
153
|
+
$elegant-breakpoint-xxl: 1400px !default;
|
|
154
|
+
|
|
155
|
+
// ============================================
|
|
156
|
+
// Component Sizing
|
|
157
|
+
// ============================================
|
|
158
|
+
// Avatar sizes map
|
|
159
|
+
$avatar-sizes: (
|
|
160
|
+
null: 3rem, // default
|
|
161
|
+
2xs: 0.5rem,
|
|
162
|
+
xs: 1.5rem,
|
|
163
|
+
sm: 2rem,
|
|
164
|
+
md: 2.5rem,
|
|
165
|
+
lg: 3.5rem,
|
|
166
|
+
xl: 5rem,
|
|
167
|
+
2xl: 7.5rem,
|
|
168
|
+
3xl: 10rem,
|
|
169
|
+
4xl: 12.5rem,
|
|
170
|
+
5xl: 15rem
|
|
171
|
+
) !default;
|
|
172
|
+
|
|
173
|
+
// Forward Bootstrap with our configuration
|
|
174
|
+
@forward '../bootstrap/scss/bootstrap.scss' with (
|
|
175
|
+
$primary: $primary,
|
|
176
|
+
$secondary: $secondary,
|
|
177
|
+
$success: $success,
|
|
178
|
+
$info: $info,
|
|
179
|
+
$warning: $warning,
|
|
180
|
+
$danger: $danger,
|
|
181
|
+
$light: $light,
|
|
182
|
+
$dark: $dark,
|
|
183
|
+
$font-family-sans-serif: $font-family-sans-serif,
|
|
184
|
+
$headings-font-weight: $headings-font-weight,
|
|
185
|
+
$border-radius: $border-radius,
|
|
186
|
+
$border-radius-sm: $border-radius-sm,
|
|
187
|
+
$border-radius-lg: $border-radius-lg,
|
|
188
|
+
$enable-negative-margins: true
|
|
189
|
+
);
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Import the theme entry point
|
|
2
|
+
// __main_assets__ is a webpack alias that resolves to UJM's dist/assets
|
|
3
|
+
import bootstrap from '__main_assets__/themes/bootstrap/js/index.umd.js';
|
|
4
|
+
import { ready as domReady } from 'web-manager/modules/dom.js';
|
|
5
|
+
|
|
6
|
+
// Make Bootstrap available globally
|
|
7
|
+
window.bootstrap = bootstrap;
|
|
8
|
+
|
|
9
|
+
// Log that we've MADE IT
|
|
10
|
+
/* @dev-only:start */
|
|
11
|
+
{
|
|
12
|
+
console.log('elegant theme loaded successfully (assets/themes/elegant/_theme.js)');
|
|
13
|
+
}
|
|
14
|
+
/* @dev-only:end */
|
|
15
|
+
|
|
16
|
+
// Import navbar scroll functionality
|
|
17
|
+
import setupNavbarScroll from './js/navbar-scroll.js';
|
|
18
|
+
// Import infinite scroll functionality (used by logo scroll, testimonials, etc.)
|
|
19
|
+
import { setupInfiniteScroll } from './js/infinite-scroll.js';
|
|
20
|
+
// Import tooltip initialization
|
|
21
|
+
import initializeTooltips from './js/initialize-tooltips.js';
|
|
22
|
+
// Import hero demo form initialization
|
|
23
|
+
import initHeroDemoForm from './js/hero-demo-form.js';
|
|
24
|
+
|
|
25
|
+
// Initialize theme components when DOM is ready
|
|
26
|
+
domReady().then(() => {
|
|
27
|
+
// elegant Theme Initializations
|
|
28
|
+
setupNavbarScroll();
|
|
29
|
+
setupInfiniteScroll();
|
|
30
|
+
|
|
31
|
+
// Generic Bootstrap initializations
|
|
32
|
+
initializeTooltips();
|
|
33
|
+
|
|
34
|
+
// Initialize hero demo form if present
|
|
35
|
+
initHeroDemoForm();
|
|
36
|
+
});
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Forward theme configuration (allows consuming project to override)
|
|
2
|
+
@forward 'config';
|
|
3
|
+
@use 'config' as *;
|
|
4
|
+
|
|
5
|
+
// Import root overrides (CSS custom properties)
|
|
6
|
+
@import 'css/base/root';
|
|
7
|
+
|
|
8
|
+
// Import base styles
|
|
9
|
+
@import 'css/base/animations';
|
|
10
|
+
@import 'css/base/backgrounds';
|
|
11
|
+
@import 'css/base/borders';
|
|
12
|
+
@import 'css/base/typography';
|
|
13
|
+
@import 'css/base/utilities';
|
|
14
|
+
|
|
15
|
+
// Import layout styles
|
|
16
|
+
@import 'css/layout/backend';
|
|
17
|
+
@import 'css/layout/blog';
|
|
18
|
+
@import 'css/layout/general';
|
|
19
|
+
@import 'css/layout/navigation';
|
|
20
|
+
@import 'css/layout/team';
|
|
21
|
+
|
|
22
|
+
// Import component styles
|
|
23
|
+
@import 'css/components/accordion';
|
|
24
|
+
@import 'css/components/badges';
|
|
25
|
+
@import 'css/components/buttons';
|
|
26
|
+
@import 'css/components/cards';
|
|
27
|
+
@import 'css/components/carousel';
|
|
28
|
+
@import 'css/components/forms';
|
|
29
|
+
@import 'css/components/infinite-scroll';
|
|
30
|
+
@import 'css/components/text';
|
|
31
|
+
|
|
32
|
+
// Import universal Bootstrap overrides (shared across all UJ themes)
|
|
33
|
+
// Must come AFTER Bootstrap is loaded via config to use @extend
|
|
34
|
+
@import '../bootstrap/overrides';
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// elegant Animation Utilities
|
|
2
|
+
// Keyframes and animation classes for dynamic effects
|
|
3
|
+
|
|
4
|
+
// ============================================
|
|
5
|
+
// Keyframe Animations
|
|
6
|
+
// ============================================
|
|
7
|
+
|
|
8
|
+
@keyframes gradient-shimmer {
|
|
9
|
+
0% {
|
|
10
|
+
background-position: 0% 50%;
|
|
11
|
+
}
|
|
12
|
+
50% {
|
|
13
|
+
background-position: 100% 50%;
|
|
14
|
+
}
|
|
15
|
+
100% {
|
|
16
|
+
background-position: 0% 50%;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// ============================================
|
|
21
|
+
// Animation Classes
|
|
22
|
+
// ============================================
|
|
23
|
+
|
|
24
|
+
// Gradient animation modifier - works with all rainbow gradient classes
|
|
25
|
+
.gradient-animated {
|
|
26
|
+
animation: gradient-shimmer 5s ease-out infinite alternate !important;
|
|
27
|
+
}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
// elegant Background Utilities
|
|
2
|
+
// Background gradients, patterns, and visual effects
|
|
3
|
+
|
|
4
|
+
// ============================================
|
|
5
|
+
// Gradient Backgrounds
|
|
6
|
+
// ============================================
|
|
7
|
+
.bg-gradient-primary {
|
|
8
|
+
background-image: $elegant-gradient-primary !important;
|
|
9
|
+
background-size: 300% 300% !important;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.bg-gradient-dark {
|
|
13
|
+
background-image: $elegant-gradient-dark !important;
|
|
14
|
+
background-size: 300% 300% !important;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.bg-gradient-light {
|
|
18
|
+
background-image: $elegant-gradient-light !important;
|
|
19
|
+
background-size: 300% 300% !important;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.bg-gradient-sunset {
|
|
23
|
+
background-image: $elegant-gradient-sunset !important;
|
|
24
|
+
background-size: 300% 300% !important;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.bg-gradient-aurora {
|
|
28
|
+
background-image: $elegant-gradient-aurora !important;
|
|
29
|
+
background-size: 300% 300% !important;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.bg-gradient-rainbow {
|
|
33
|
+
background-image: $elegant-gradient-rainbow !important;
|
|
34
|
+
background-size: 300% 300% !important;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Grain texture modifier - add this class alongside bg-gradient-* to add grain effect
|
|
38
|
+
.gradient-grain {
|
|
39
|
+
position: relative;
|
|
40
|
+
|
|
41
|
+
&::before {
|
|
42
|
+
content: '';
|
|
43
|
+
position: absolute;
|
|
44
|
+
top: 0;
|
|
45
|
+
left: 0;
|
|
46
|
+
width: 100%;
|
|
47
|
+
height: 100%;
|
|
48
|
+
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='2.5' numOctaves='5' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");
|
|
49
|
+
opacity: 0.6;
|
|
50
|
+
mix-blend-mode: overlay;
|
|
51
|
+
pointer-events: none;
|
|
52
|
+
z-index: 1;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Ensure content stays above the grain overlay
|
|
56
|
+
> * {
|
|
57
|
+
position: relative;
|
|
58
|
+
z-index: 2;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// @keyframes gradient-shift {
|
|
63
|
+
// 0%, 100% {
|
|
64
|
+
// background-position: 0% 50%, 0% 0%;
|
|
65
|
+
// }
|
|
66
|
+
// 25% {
|
|
67
|
+
// background-position: 100% 50%, 100% 100%;
|
|
68
|
+
// }
|
|
69
|
+
// 50% {
|
|
70
|
+
// background-position: 100% 0%, 50% 50%;
|
|
71
|
+
// }
|
|
72
|
+
// 75% {
|
|
73
|
+
// background-position: 0% 100%, 100% 0%;
|
|
74
|
+
// }
|
|
75
|
+
// }
|
|
76
|
+
|
|
77
|
+
// .bg-gradient-rainbow {
|
|
78
|
+
// position: relative;
|
|
79
|
+
// background:
|
|
80
|
+
// linear-gradient(
|
|
81
|
+
// to bottom right,
|
|
82
|
+
// rgba(0, 255, 209, 0.5),
|
|
83
|
+
// rgba(170, 70, 252, 0.69)
|
|
84
|
+
// ),
|
|
85
|
+
// radial-gradient(circle at 50% 50%, rgba(255, 255, 255, 0.5), rgba(0, 0, 0, 0.5)) !important;
|
|
86
|
+
// background-size: 200% 200%, 200% 200% !important;
|
|
87
|
+
// animation: gradient-shift 15s ease infinite;
|
|
88
|
+
|
|
89
|
+
// &::before {
|
|
90
|
+
// content: '';
|
|
91
|
+
// position: absolute;
|
|
92
|
+
// top: 0;
|
|
93
|
+
// left: 0;
|
|
94
|
+
// width: 100%;
|
|
95
|
+
// height: 100%;
|
|
96
|
+
// background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='2.5' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");
|
|
97
|
+
// opacity: 1;
|
|
98
|
+
// mix-blend-mode: overlay;
|
|
99
|
+
// pointer-events: none;
|
|
100
|
+
// z-index: 1;
|
|
101
|
+
// filter: contrast(110%) brightness(105%);
|
|
102
|
+
// }
|
|
103
|
+
|
|
104
|
+
// // Ensure content stays above the grain overlay
|
|
105
|
+
// > * {
|
|
106
|
+
// position: relative;
|
|
107
|
+
// z-index: 2;
|
|
108
|
+
// }
|
|
109
|
+
// }
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
// ============================================
|
|
114
|
+
// Glass Morphism Mixin
|
|
115
|
+
// ============================================
|
|
116
|
+
@mixin glassy-effect {
|
|
117
|
+
background: transparent !important;
|
|
118
|
+
backdrop-filter: blur(20px) saturate(180%);
|
|
119
|
+
-webkit-backdrop-filter: blur(20px) saturate(180%);
|
|
120
|
+
border: 1px solid rgba(255, 255, 255, 0.15) !important;
|
|
121
|
+
position: relative;
|
|
122
|
+
|
|
123
|
+
// Glass effect overlay with body color using custom property
|
|
124
|
+
&::before {
|
|
125
|
+
content: "";
|
|
126
|
+
position: absolute;
|
|
127
|
+
inset: 0;
|
|
128
|
+
background: var(--bs-body-bg);
|
|
129
|
+
opacity: var(--navbar-before-opacity, 0.25);
|
|
130
|
+
border-radius: inherit;
|
|
131
|
+
z-index: -1;
|
|
132
|
+
pointer-events: none;
|
|
133
|
+
transition: opacity 0.3s ease;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// Dark mode adjustments
|
|
137
|
+
[data-bs-theme="dark"] & {
|
|
138
|
+
border: 1px solid rgba(255, 255, 255, 0.1) !important;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// ============================================
|
|
143
|
+
// Glass Morphism Classes
|
|
144
|
+
// ============================================
|
|
145
|
+
.bg-glassy {
|
|
146
|
+
@include glassy-effect;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// ============================================
|
|
150
|
+
// Pattern Overlays
|
|
151
|
+
// ============================================
|
|
152
|
+
.bg-pattern {
|
|
153
|
+
background-image: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%235B47FB' fill-opacity='0.05'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// ============================================
|
|
157
|
+
// Blur Effects
|
|
158
|
+
// ============================================
|
|
159
|
+
.blur-sm {
|
|
160
|
+
filter: blur(4px);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.blur-md {
|
|
164
|
+
filter: blur(8px);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.blur-lg {
|
|
168
|
+
filter: blur(16px);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// ============================================
|
|
172
|
+
// Filter Effects
|
|
173
|
+
// ============================================
|
|
174
|
+
.grayscale {
|
|
175
|
+
filter: grayscale(100%);
|
|
176
|
+
|
|
177
|
+
&:hover {
|
|
178
|
+
filter: grayscale(0);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// ============================================
|
|
183
|
+
// Adaptive Inverse Background
|
|
184
|
+
// ============================================
|
|
185
|
+
.bg-adaptive-inverse {
|
|
186
|
+
@extend .bg-dark;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
[data-bs-theme="dark"] .bg-adaptive-inverse {
|
|
190
|
+
@extend .bg-light;
|
|
191
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// elegant Border Utilities
|
|
2
|
+
// Border styles, gradients, and decorative dividers
|
|
3
|
+
|
|
4
|
+
// ============================================
|
|
5
|
+
// Border Radius
|
|
6
|
+
// ============================================
|
|
7
|
+
.rounded-sm { border-radius: $elegant-radius-sm !important; }
|
|
8
|
+
.rounded-md { border-radius: $elegant-radius-md !important; }
|
|
9
|
+
.rounded-lg { border-radius: $elegant-radius-lg !important; }
|
|
10
|
+
.rounded-xl { border-radius: $elegant-radius-xl !important; }
|
|
11
|
+
.rounded-2xl { border-radius: $elegant-radius-2xl !important; }
|
|
12
|
+
.rounded-full { border-radius: $elegant-radius-full !important; }
|
|
13
|
+
|
|
14
|
+
// ============================================
|
|
15
|
+
// Gradient Borders
|
|
16
|
+
// ============================================
|
|
17
|
+
.border-gradient-rainbow {
|
|
18
|
+
--bs-border-width: 3px;
|
|
19
|
+
position: relative;
|
|
20
|
+
border: none !important;
|
|
21
|
+
|
|
22
|
+
&::before {
|
|
23
|
+
content: "";
|
|
24
|
+
position: absolute;
|
|
25
|
+
inset: calc(var(--bs-border-width) * -1);
|
|
26
|
+
border-radius: inherit;
|
|
27
|
+
background: $elegant-gradient-rainbow;
|
|
28
|
+
background-size: 300% 300%;
|
|
29
|
+
z-index: -1;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
&::after {
|
|
33
|
+
content: "";
|
|
34
|
+
position: absolute;
|
|
35
|
+
inset: 0;
|
|
36
|
+
border-radius: inherit;
|
|
37
|
+
background: inherit;
|
|
38
|
+
z-index: -1;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Override Bootstrap border width classes to work with gradient border
|
|
42
|
+
&.border-0 { --bs-border-width: 0; }
|
|
43
|
+
&.border-1 { --bs-border-width: 1px; }
|
|
44
|
+
&.border-2 { --bs-border-width: 2px; }
|
|
45
|
+
&.border-3 { --bs-border-width: 3px; }
|
|
46
|
+
&.border-4 { --bs-border-width: 4px; }
|
|
47
|
+
&.border-5 { --bs-border-width: 5px; }
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// ============================================
|
|
51
|
+
// Divider Styles
|
|
52
|
+
// ============================================
|
|
53
|
+
.divider {
|
|
54
|
+
height: 1px;
|
|
55
|
+
background: $elegant-gray-lighter;
|
|
56
|
+
margin: $elegant-spacing-2xl 0;
|
|
57
|
+
|
|
58
|
+
&.divider-gradient {
|
|
59
|
+
background: $elegant-gradient-primary;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
&.divider-fade {
|
|
63
|
+
background: linear-gradient(to right, transparent, $elegant-gray-lighter 20%, $elegant-gray-lighter 80%, transparent);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// elegant Theme CSS Custom Properties
|
|
2
|
+
// Converts SCSS variables to CSS custom properties for runtime theming
|
|
3
|
+
// These override Bootstrap's CSS variables and allow dynamic theme switching
|
|
4
|
+
|
|
5
|
+
// ============================================
|
|
6
|
+
// Light Mode (Default)
|
|
7
|
+
// ============================================
|
|
8
|
+
:root,
|
|
9
|
+
[data-bs-theme="light"] {
|
|
10
|
+
// Background colors
|
|
11
|
+
--bs-body-bg: #{$elegant-bg-light};
|
|
12
|
+
--bs-body-bg-rgb: #{red($elegant-bg-light)}, #{green($elegant-bg-light)}, #{blue($elegant-bg-light)};
|
|
13
|
+
|
|
14
|
+
--bs-secondary-bg: #{$elegant-bg-light-secondary};
|
|
15
|
+
--bs-secondary-bg-rgb: #{red($elegant-bg-light-secondary)}, #{green($elegant-bg-light-secondary)}, #{blue($elegant-bg-light-secondary)};
|
|
16
|
+
|
|
17
|
+
--bs-tertiary-bg: #{$elegant-bg-light-tertiary};
|
|
18
|
+
--bs-tertiary-bg-rgb: #{red($elegant-bg-light-tertiary)}, #{green($elegant-bg-light-tertiary)}, #{blue($elegant-bg-light-tertiary)};
|
|
19
|
+
|
|
20
|
+
// Component backgrounds - use secondary bg for elevated surfaces
|
|
21
|
+
// --bs-card-bg: #{$elegant-bg-light-secondary};
|
|
22
|
+
// --bs-dropdown-bg: #{$elegant-bg-light-secondary};
|
|
23
|
+
// --bs-modal-bg: #{$elegant-bg-light-secondary};
|
|
24
|
+
// --bs-popover-bg: #{$elegant-bg-light-secondary};
|
|
25
|
+
// --bs-offcanvas-bg: #{$elegant-bg-light-secondary};
|
|
26
|
+
// --bs-accordion-bg: #{$elegant-bg-light-secondary};
|
|
27
|
+
|
|
28
|
+
// Add more Bootstrap overrides here as needed
|
|
29
|
+
// Examples:
|
|
30
|
+
// --bs-body-color: #212529;
|
|
31
|
+
// --bs-border-color: #dee2e6;
|
|
32
|
+
// --bs-link-color: #{$primary};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// ============================================
|
|
36
|
+
// Dark Mode
|
|
37
|
+
// ============================================
|
|
38
|
+
[data-bs-theme="dark"] {
|
|
39
|
+
// Background colors
|
|
40
|
+
--bs-body-bg: #{$elegant-bg-dark};
|
|
41
|
+
--bs-body-bg-rgb: #{red($elegant-bg-dark)}, #{green($elegant-bg-dark)}, #{blue($elegant-bg-dark)};
|
|
42
|
+
|
|
43
|
+
--bs-secondary-bg: #{$elegant-bg-dark-secondary};
|
|
44
|
+
--bs-secondary-bg-rgb: #{red($elegant-bg-dark-secondary)}, #{green($elegant-bg-dark-secondary)}, #{blue($elegant-bg-dark-secondary)};
|
|
45
|
+
|
|
46
|
+
--bs-tertiary-bg: #{$elegant-bg-dark-tertiary};
|
|
47
|
+
--bs-tertiary-bg-rgb: #{red($elegant-bg-dark-tertiary)}, #{green($elegant-bg-dark-tertiary)}, #{blue($elegant-bg-dark-tertiary)};
|
|
48
|
+
|
|
49
|
+
// Component backgrounds - use secondary bg for elevated surfaces
|
|
50
|
+
// --bs-card-bg: #{$elegant-bg-dark-secondary};
|
|
51
|
+
// --bs-dropdown-bg: #{$elegant-bg-dark-secondary};
|
|
52
|
+
// --bs-modal-bg: #{$elegant-bg-dark-secondary};
|
|
53
|
+
// --bs-popover-bg: #{$elegant-bg-dark-secondary};
|
|
54
|
+
// --bs-offcanvas-bg: #{$elegant-bg-dark-secondary};
|
|
55
|
+
// --bs-accordion-bg: #{$elegant-bg-dark-secondary};
|
|
56
|
+
|
|
57
|
+
// Add more Bootstrap overrides here as needed
|
|
58
|
+
}
|