domma-js 0.9.5-alpha → 0.9.7-alpha
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/README.md +9 -9
- package/bin/domma-cli.js +231 -22
- package/package.json +1 -1
- package/public/dist/domma-syntax.min.js +3 -3
- package/public/dist/domma.css +3 -3
- package/public/dist/domma.esm.js +4 -4
- package/public/dist/domma.min.js +4 -4
- package/public/dist/elements.css +5 -5
- package/public/dist/grid.css +3 -3
- package/public/dist/syntax.css +3 -3
- package/public/dist/themes/domma-themes.css +3 -3
- package/templates/kickstart/README.md +139 -0
- package/templates/kickstart/backend/.gitkeep +0 -0
- package/templates/kickstart/backend/README.md +160 -0
- package/templates/kickstart/domma.config.json +14 -10
- package/templates/kickstart/frontend/assets/logo/placeholder.svg +6 -0
- package/templates/kickstart/frontend/css/custom.css +121 -0
- package/templates/kickstart/frontend/js/app.js +166 -0
- package/templates/kickstart/frontend/pages/about/about.js +10 -0
- package/templates/kickstart/frontend/pages/about/index.html +229 -0
- package/templates/kickstart/frontend/pages/blog/blog.js +10 -0
- package/templates/kickstart/frontend/pages/blog/index.html +218 -0
- package/templates/kickstart/frontend/pages/contact/contact.js +33 -0
- package/templates/kickstart/frontend/pages/contact/index.html +196 -0
- package/templates/kickstart/frontend/pages/cookies/cookies.js +51 -0
- package/templates/kickstart/frontend/pages/cookies/index.html +381 -0
- package/templates/kickstart/frontend/pages/docs/docs.js +28 -0
- package/templates/kickstart/frontend/pages/docs/index.html +286 -0
- package/templates/kickstart/frontend/pages/index.html +161 -0
- package/templates/kickstart/frontend/pages/index.js +10 -0
- package/templates/kickstart/frontend/pages/privacy/index.html +277 -0
- package/templates/kickstart/frontend/pages/privacy/privacy.js +51 -0
- package/templates/kickstart/frontend/pages/terms/index.html +369 -0
- package/templates/kickstart/frontend/pages/terms/terms.js +51 -0
- package/templates/kickstart-old/domma.config.json +74 -0
- package/templates/page-template/page.html +51 -0
- package/templates/page-template/page.js +10 -0
- /package/templates/{kickstart → kickstart-old}/about/index.html +0 -0
- /package/templates/{kickstart → kickstart-old}/assets/logo/placeholder.svg +0 -0
- /package/templates/{kickstart → kickstart-old}/blog/index.html +0 -0
- /package/templates/{kickstart → kickstart-old}/contact/index.html +0 -0
- /package/templates/{kickstart → kickstart-old}/css/custom.css +0 -0
- /package/templates/{kickstart → kickstart-old}/docs/index.html +0 -0
- /package/templates/{kickstart → kickstart-old}/index.html +0 -0
- /package/templates/{kickstart → kickstart-old}/js/app.js +0 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Domma Kickstart Application
|
|
3
|
+
*
|
|
4
|
+
* This file initialises your Domma project based on domma.config.json.
|
|
5
|
+
* Customise the config file to change navbar, footer, theme, and features.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
$(() => {
|
|
9
|
+
// Determine config path based on page depth
|
|
10
|
+
// Root pages (pages/index.html) need ../domma.config.json
|
|
11
|
+
// Sub-pages (pages/about/index.html) need ../../domma.config.json
|
|
12
|
+
const pathDepth = window.location.pathname.split('/').filter(Boolean).length;
|
|
13
|
+
const configPath = pathDepth > 2 ? '../../domma.config.json' : '../domma.config.json';
|
|
14
|
+
|
|
15
|
+
// Load configuration
|
|
16
|
+
Domma.http.get(configPath).then(config => {
|
|
17
|
+
// Initialise theme
|
|
18
|
+
if (config.theme) {
|
|
19
|
+
Domma.theme.init({
|
|
20
|
+
theme: config.theme.default || 'charcoal-dark',
|
|
21
|
+
persist: config.theme.persist !== false,
|
|
22
|
+
autoDetect: config.theme.autoDetect === true
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
// Add theme selector if enabled
|
|
26
|
+
if (config.theme.selector) {
|
|
27
|
+
addThemeSelector();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Initialise navbar
|
|
32
|
+
if (config.navbar) {
|
|
33
|
+
Domma.elements.navbar('#main-navbar', {
|
|
34
|
+
brand: config.navbar.brand,
|
|
35
|
+
items: config.navbar.items,
|
|
36
|
+
variant: config.navbar.variant || 'dark',
|
|
37
|
+
position: config.navbar.position || 'sticky',
|
|
38
|
+
collapsible: config.navbar.collapsible !== false
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Initialise footer
|
|
43
|
+
if (config.footer) {
|
|
44
|
+
const $footer = $('.page-footer');
|
|
45
|
+
if ($footer.length) {
|
|
46
|
+
const $footerContent = $('<div class="footer-content"></div>');
|
|
47
|
+
|
|
48
|
+
const $copyright = $('<p></p>').text(config.footer.copyright);
|
|
49
|
+
$footerContent.append($copyright);
|
|
50
|
+
|
|
51
|
+
const $nav = $('<nav class="footer-nav"></nav>');
|
|
52
|
+
_.each(config.footer.links, link => {
|
|
53
|
+
const $link = $('<a></a>')
|
|
54
|
+
.attr('href', link.url)
|
|
55
|
+
.text(link.text);
|
|
56
|
+
$nav.append($link);
|
|
57
|
+
});
|
|
58
|
+
$footerContent.append($nav);
|
|
59
|
+
|
|
60
|
+
$footer.append($footerContent);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Initialise features
|
|
65
|
+
if (config.features) {
|
|
66
|
+
// Icon scanning
|
|
67
|
+
if (config.features.icons) {
|
|
68
|
+
Domma.icons.scan();
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Back to top button
|
|
72
|
+
if (config.features.backToTop) {
|
|
73
|
+
Domma.elements.backToTop({
|
|
74
|
+
scrollThreshold: 300,
|
|
75
|
+
position: 'bottom-right'
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Smooth scroll
|
|
80
|
+
if (config.features.smoothScroll) {
|
|
81
|
+
$('a[href^="#"]').on('click', function (e) {
|
|
82
|
+
e.preventDefault();
|
|
83
|
+
const targetId = $(this).attr('href');
|
|
84
|
+
const $target = $(targetId);
|
|
85
|
+
|
|
86
|
+
if ($target.length) {
|
|
87
|
+
$target[0].scrollIntoView({behavior: 'smooth'});
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Code copy buttons
|
|
93
|
+
if (config.features.codeCopy) {
|
|
94
|
+
$('pre code').each((codeBlock) => {
|
|
95
|
+
const $code = $(codeBlock);
|
|
96
|
+
const $pre = $code.parent();
|
|
97
|
+
|
|
98
|
+
const $button = $('<button class="btn btn-sm code-copy-btn">Copy</button>');
|
|
99
|
+
|
|
100
|
+
$button.on('click', () => {
|
|
101
|
+
_.copyToClipboard($code.text());
|
|
102
|
+
$button.text('Copied!');
|
|
103
|
+
setTimeout(() => $button.text('Copy'), 2000);
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
$pre.css('position', 'relative');
|
|
107
|
+
$pre.prepend($button);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
console.log(`✓ Domma initialised with theme: ${config.theme.default}`);
|
|
113
|
+
}).catch(err => {
|
|
114
|
+
console.warn('Could not load domma.config.json:', err.message);
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Add floating theme selector
|
|
120
|
+
*/
|
|
121
|
+
function addThemeSelector() {
|
|
122
|
+
const themes = Domma.theme.listThemes();
|
|
123
|
+
const currentTheme = Domma.theme.get();
|
|
124
|
+
|
|
125
|
+
const $selector = $('<div class="theme-selector"></div>');
|
|
126
|
+
const $select = $('<select id="theme-select" class="form-select"></select>');
|
|
127
|
+
|
|
128
|
+
_.each(themes, theme => {
|
|
129
|
+
const $option = $('<option></option>')
|
|
130
|
+
.attr('value', theme)
|
|
131
|
+
.text(theme);
|
|
132
|
+
|
|
133
|
+
if (theme === currentTheme) {
|
|
134
|
+
$option.attr('selected', 'selected');
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
$select.append($option);
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
$selector.append($select);
|
|
141
|
+
|
|
142
|
+
// Add styles
|
|
143
|
+
const $style = $(`<style>
|
|
144
|
+
.theme-selector {
|
|
145
|
+
position: fixed;
|
|
146
|
+
bottom: 80px;
|
|
147
|
+
right: 20px;
|
|
148
|
+
z-index: 1000;
|
|
149
|
+
background: var(--dm-surface);
|
|
150
|
+
padding: var(--dm-space-3);
|
|
151
|
+
border-radius: var(--dm-radius-md);
|
|
152
|
+
box-shadow: var(--dm-shadow-lg);
|
|
153
|
+
}
|
|
154
|
+
.theme-selector select {
|
|
155
|
+
min-width: 150px;
|
|
156
|
+
}
|
|
157
|
+
</style>`);
|
|
158
|
+
|
|
159
|
+
$('head').append($style);
|
|
160
|
+
$('body').append($selector);
|
|
161
|
+
|
|
162
|
+
// Handle theme changes
|
|
163
|
+
$select.on('change', (e) => {
|
|
164
|
+
Domma.theme.set($(e.target).val());
|
|
165
|
+
});
|
|
166
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* About Page Initialization
|
|
3
|
+
* Team sections, timeline, company info
|
|
4
|
+
*/
|
|
5
|
+
$(() => {
|
|
6
|
+
// Example: Initialize any page-specific components
|
|
7
|
+
// const timeline = Domma.elements.progression('#timeline', { mode: 'timeline' });
|
|
8
|
+
|
|
9
|
+
console.log('About page initialized');
|
|
10
|
+
});
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>About - {{projectName}}</title>
|
|
7
|
+
|
|
8
|
+
<!-- Domma CSS -->
|
|
9
|
+
<link rel="stylesheet" href="../../dist/domma.css">
|
|
10
|
+
<link rel="stylesheet" href="../../dist/grid.css">
|
|
11
|
+
<link rel="stylesheet" href="../../dist/elements.css">
|
|
12
|
+
<link rel="stylesheet" href="../../dist/themes/domma-themes.css">
|
|
13
|
+
|
|
14
|
+
<!-- Custom CSS -->
|
|
15
|
+
<link rel="stylesheet" href="../../css/custom.css">
|
|
16
|
+
</head>
|
|
17
|
+
<body class="dm-theme-{{theme}}">
|
|
18
|
+
<!-- Navigation -->
|
|
19
|
+
<nav id="main-navbar"></nav>
|
|
20
|
+
|
|
21
|
+
<!-- Page Header -->
|
|
22
|
+
<section class="container py-6">
|
|
23
|
+
<h1 class="display-2 mb-3">About {{projectName}}</h1>
|
|
24
|
+
<p class="lead text-secondary">
|
|
25
|
+
Learn more about our mission, values, and the team behind the project.
|
|
26
|
+
</p>
|
|
27
|
+
</section>
|
|
28
|
+
|
|
29
|
+
<!-- About Content -->
|
|
30
|
+
<section class="container py-4">
|
|
31
|
+
<div class="grid grid-cols-1 lg:grid-cols-3 gap-6">
|
|
32
|
+
<div class="lg:col-span-2">
|
|
33
|
+
<h2 class="h3 mb-4">Our Story</h2>
|
|
34
|
+
<p>
|
|
35
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore
|
|
36
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.
|
|
37
|
+
</p>
|
|
38
|
+
<p>
|
|
39
|
+
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
|
|
40
|
+
sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
41
|
+
</p>
|
|
42
|
+
|
|
43
|
+
<h2 class="h3 mt-6 mb-4">Our Mission</h2>
|
|
44
|
+
<p>
|
|
45
|
+
To build modern, accessible web applications that deliver exceptional user experiences. We believe in:
|
|
46
|
+
</p>
|
|
47
|
+
<ul class="list-unstyled ms-4">
|
|
48
|
+
<li class="mb-2"><span data-icon="check-circle" class="text-success me-2"></span> <strong>Simplicity</strong> -
|
|
49
|
+
Keep things simple and intuitive
|
|
50
|
+
</li>
|
|
51
|
+
<li class="mb-2"><span data-icon="check-circle" class="text-success me-2"></span> <strong>Performance</strong> -
|
|
52
|
+
Fast, lightweight, and efficient
|
|
53
|
+
</li>
|
|
54
|
+
<li class="mb-2"><span data-icon="check-circle" class="text-success me-2"></span> <strong>Accessibility</strong>
|
|
55
|
+
- Inclusive design for everyone
|
|
56
|
+
</li>
|
|
57
|
+
<li class="mb-2"><span data-icon="check-circle" class="text-success me-2"></span> <strong>Open Source</strong> -
|
|
58
|
+
Community-driven development
|
|
59
|
+
</li>
|
|
60
|
+
</ul>
|
|
61
|
+
</div>
|
|
62
|
+
|
|
63
|
+
<div>
|
|
64
|
+
<div class="card shadow-md">
|
|
65
|
+
<div class="card-body">
|
|
66
|
+
<h3 class="h5 mb-3">Quick Facts</h3>
|
|
67
|
+
<dl class="mb-0">
|
|
68
|
+
<dt class="text-secondary mb-1">Founded</dt>
|
|
69
|
+
<dd class="mb-3">{{year}}</dd>
|
|
70
|
+
|
|
71
|
+
<dt class="text-secondary mb-1">Framework</dt>
|
|
72
|
+
<dd class="mb-3">Domma.js</dd>
|
|
73
|
+
|
|
74
|
+
<dt class="text-secondary mb-1">License</dt>
|
|
75
|
+
<dd class="mb-3">ISC</dd>
|
|
76
|
+
|
|
77
|
+
<dt class="text-secondary mb-1">Status</dt>
|
|
78
|
+
<dd class="mb-0">
|
|
79
|
+
<span class="badge badge-success">Active Development</span>
|
|
80
|
+
</dd>
|
|
81
|
+
</dl>
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
86
|
+
</section>
|
|
87
|
+
|
|
88
|
+
<!-- Team Section -->
|
|
89
|
+
<section class="container py-6">
|
|
90
|
+
<h2 class="text-center mb-6">Meet the Team</h2>
|
|
91
|
+
|
|
92
|
+
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4">
|
|
93
|
+
<!-- Team Member 1 -->
|
|
94
|
+
<div class="card text-center hover shadow-md">
|
|
95
|
+
<div class="card-body">
|
|
96
|
+
<div class="mb-3"
|
|
97
|
+
style="width: 80px; height: 80px; margin: 0 auto; border-radius: 50%; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);"></div>
|
|
98
|
+
<h3 class="h5 mb-1">Jane Doe</h3>
|
|
99
|
+
<p class="text-secondary mb-3">Lead Developer</p>
|
|
100
|
+
<div class="d-flex justify-content-center gap-2">
|
|
101
|
+
<a href="#" class="btn btn-sm btn-outline-primary">
|
|
102
|
+
<span data-icon="github"></span>
|
|
103
|
+
</a>
|
|
104
|
+
<a href="#" class="btn btn-sm btn-outline-primary">
|
|
105
|
+
<span data-icon="twitter"></span>
|
|
106
|
+
</a>
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|
|
109
|
+
</div>
|
|
110
|
+
|
|
111
|
+
<!-- Team Member 2 -->
|
|
112
|
+
<div class="card text-center hover shadow-md">
|
|
113
|
+
<div class="card-body">
|
|
114
|
+
<div class="mb-3"
|
|
115
|
+
style="width: 80px; height: 80px; margin: 0 auto; border-radius: 50%; background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);"></div>
|
|
116
|
+
<h3 class="h5 mb-1">John Smith</h3>
|
|
117
|
+
<p class="text-secondary mb-3">UX Designer</p>
|
|
118
|
+
<div class="d-flex justify-content-center gap-2">
|
|
119
|
+
<a href="#" class="btn btn-sm btn-outline-primary">
|
|
120
|
+
<span data-icon="github"></span>
|
|
121
|
+
</a>
|
|
122
|
+
<a href="#" class="btn btn-sm btn-outline-primary">
|
|
123
|
+
<span data-icon="twitter"></span>
|
|
124
|
+
</a>
|
|
125
|
+
</div>
|
|
126
|
+
</div>
|
|
127
|
+
</div>
|
|
128
|
+
|
|
129
|
+
<!-- Team Member 3 -->
|
|
130
|
+
<div class="card text-center hover shadow-md">
|
|
131
|
+
<div class="card-body">
|
|
132
|
+
<div class="mb-3"
|
|
133
|
+
style="width: 80px; height: 80px; margin: 0 auto; border-radius: 50%; background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);"></div>
|
|
134
|
+
<h3 class="h5 mb-1">Sarah Johnson</h3>
|
|
135
|
+
<p class="text-secondary mb-3">Product Manager</p>
|
|
136
|
+
<div class="d-flex justify-content-center gap-2">
|
|
137
|
+
<a href="#" class="btn btn-sm btn-outline-primary">
|
|
138
|
+
<span data-icon="github"></span>
|
|
139
|
+
</a>
|
|
140
|
+
<a href="#" class="btn btn-sm btn-outline-primary">
|
|
141
|
+
<span data-icon="twitter"></span>
|
|
142
|
+
</a>
|
|
143
|
+
</div>
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
|
|
147
|
+
<!-- Team Member 4 -->
|
|
148
|
+
<div class="card text-center hover shadow-md">
|
|
149
|
+
<div class="card-body">
|
|
150
|
+
<div class="mb-3"
|
|
151
|
+
style="width: 80px; height: 80px; margin: 0 auto; border-radius: 50%; background: linear-gradient(135deg, #fa709a 0%, #fee140 100%);"></div>
|
|
152
|
+
<h3 class="h5 mb-1">Mike Chen</h3>
|
|
153
|
+
<p class="text-secondary mb-3">DevOps Engineer</p>
|
|
154
|
+
<div class="d-flex justify-content-center gap-2">
|
|
155
|
+
<a href="#" class="btn btn-sm btn-outline-primary">
|
|
156
|
+
<span data-icon="github"></span>
|
|
157
|
+
</a>
|
|
158
|
+
<a href="#" class="btn btn-sm btn-outline-primary">
|
|
159
|
+
<span data-icon="twitter"></span>
|
|
160
|
+
</a>
|
|
161
|
+
</div>
|
|
162
|
+
</div>
|
|
163
|
+
</div>
|
|
164
|
+
</div>
|
|
165
|
+
</div>
|
|
166
|
+
</section>
|
|
167
|
+
|
|
168
|
+
<!-- Timeline Section -->
|
|
169
|
+
<section class="bg-surface py-6">
|
|
170
|
+
<div class="container">
|
|
171
|
+
<h2 class="text-center mb-6">Our Journey</h2>
|
|
172
|
+
|
|
173
|
+
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4">
|
|
174
|
+
<div class="card h-100 shadow-md">
|
|
175
|
+
<div class="card-body">
|
|
176
|
+
<div class="badge badge-primary mb-3">2024 Q1</div>
|
|
177
|
+
<h3 class="h5 mb-2">Project Launch</h3>
|
|
178
|
+
<p class="text-secondary mb-0">
|
|
179
|
+
Initial release with core features and documentation.
|
|
180
|
+
</p>
|
|
181
|
+
</div>
|
|
182
|
+
</div>
|
|
183
|
+
|
|
184
|
+
<div class="card h-100 shadow-md">
|
|
185
|
+
<div class="card-body">
|
|
186
|
+
<div class="badge badge-primary mb-3">2024 Q2</div>
|
|
187
|
+
<h3 class="h5 mb-2">Community Growth</h3>
|
|
188
|
+
<p class="text-secondary mb-0">
|
|
189
|
+
Reached 1,000 users and 50+ contributors.
|
|
190
|
+
</p>
|
|
191
|
+
</div>
|
|
192
|
+
</div>
|
|
193
|
+
|
|
194
|
+
<div class="card h-100 shadow-md">
|
|
195
|
+
<div class="card-body">
|
|
196
|
+
<div class="badge badge-primary mb-3">2024 Q3</div>
|
|
197
|
+
<h3 class="h5 mb-2">Major Update</h3>
|
|
198
|
+
<p class="text-secondary mb-0">
|
|
199
|
+
Version 2.0 with enhanced performance and new features.
|
|
200
|
+
</p>
|
|
201
|
+
</div>
|
|
202
|
+
</div>
|
|
203
|
+
|
|
204
|
+
<div class="card h-100 shadow-md">
|
|
205
|
+
<div class="card-body">
|
|
206
|
+
<div class="badge badge-success mb-3">2024 Q4</div>
|
|
207
|
+
<h3 class="h5 mb-2">Looking Ahead</h3>
|
|
208
|
+
<p class="text-secondary mb-0">
|
|
209
|
+
Expanding features and building partnerships.
|
|
210
|
+
</p>
|
|
211
|
+
</div>
|
|
212
|
+
</div>
|
|
213
|
+
</div>
|
|
214
|
+
</div>
|
|
215
|
+
</div>
|
|
216
|
+
</section>
|
|
217
|
+
|
|
218
|
+
<!-- Footer -->
|
|
219
|
+
<footer class="page-footer"></footer>
|
|
220
|
+
|
|
221
|
+
<!-- Domma JavaScript -->
|
|
222
|
+
<script src="../../dist/domma.min.js"></script>
|
|
223
|
+
|
|
224
|
+
<!-- App Initialization -->
|
|
225
|
+
<script src="../../js/app.js"></script>
|
|
226
|
+
<!-- Page-specific Initialization -->
|
|
227
|
+
<script src="about.js"></script>
|
|
228
|
+
</body>
|
|
229
|
+
</html>
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Blog - {{projectName}}</title>
|
|
7
|
+
|
|
8
|
+
<!-- Domma CSS -->
|
|
9
|
+
<link rel="stylesheet" href="../../dist/domma.css">
|
|
10
|
+
<link rel="stylesheet" href="../../dist/grid.css">
|
|
11
|
+
<link rel="stylesheet" href="../../dist/elements.css">
|
|
12
|
+
<link rel="stylesheet" href="../../dist/themes/domma-themes.css">
|
|
13
|
+
|
|
14
|
+
<!-- Custom CSS -->
|
|
15
|
+
<link rel="stylesheet" href="../../css/custom.css">
|
|
16
|
+
</head>
|
|
17
|
+
<body class="dm-theme-{{theme}}">
|
|
18
|
+
<!-- Navigation -->
|
|
19
|
+
<nav id="main-navbar"></nav>
|
|
20
|
+
|
|
21
|
+
<!-- Page Header -->
|
|
22
|
+
<section class="container py-6">
|
|
23
|
+
<h1 class="display-2 mb-3">Blog</h1>
|
|
24
|
+
<p class="lead text-secondary">
|
|
25
|
+
Latest updates, tutorials, and insights from our team.
|
|
26
|
+
</p>
|
|
27
|
+
</section>
|
|
28
|
+
|
|
29
|
+
<!-- Filters -->
|
|
30
|
+
<section class="container pb-4">
|
|
31
|
+
<div class="d-flex flex-wrap align-items-center gap-3">
|
|
32
|
+
<span class="text-secondary">Filter by:</span>
|
|
33
|
+
<div class="btn-group">
|
|
34
|
+
<button class="btn btn-sm btn-primary">All</button>
|
|
35
|
+
<button class="btn btn-sm btn-outline-primary">Tutorials</button>
|
|
36
|
+
<button class="btn btn-sm btn-outline-primary">Updates</button>
|
|
37
|
+
<button class="btn btn-sm btn-outline-primary">News</button>
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
</section>
|
|
41
|
+
|
|
42
|
+
<!-- Blog Posts -->
|
|
43
|
+
<section class="container py-4">
|
|
44
|
+
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
|
|
45
|
+
<!-- Blog Post 1 -->
|
|
46
|
+
<article class="card h-100 hover shadow-md">
|
|
47
|
+
<div class="card-body">
|
|
48
|
+
<div class="d-flex gap-2 mb-3">
|
|
49
|
+
<span class="badge badge-primary">Tutorial</span>
|
|
50
|
+
<span class="badge badge-outline">5 min read</span>
|
|
51
|
+
</div>
|
|
52
|
+
<h2 class="h5 mb-2">
|
|
53
|
+
<a href="#" class="text-decoration-none">Getting Started with Domma</a>
|
|
54
|
+
</h2>
|
|
55
|
+
<p class="text-secondary mb-3">
|
|
56
|
+
Learn the basics of Domma and build your first application in minutes.
|
|
57
|
+
</p>
|
|
58
|
+
<div class="d-flex align-items-center text-secondary text-sm">
|
|
59
|
+
<span data-icon="calendar" class="me-2"></span>
|
|
60
|
+
<time>January 15, {{year}}</time>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
</article>
|
|
64
|
+
|
|
65
|
+
<!-- Blog Post 2 -->
|
|
66
|
+
<article class="card h-100 hover shadow-md">
|
|
67
|
+
<div class="card-body">
|
|
68
|
+
<div class="d-flex gap-2 mb-3">
|
|
69
|
+
<span class="badge badge-success">Update</span>
|
|
70
|
+
<span class="badge badge-outline">3 min read</span>
|
|
71
|
+
</div>
|
|
72
|
+
<h2 class="h5 mb-2">
|
|
73
|
+
<a href="#" class="text-decoration-none">Version 2.0 Released</a>
|
|
74
|
+
</h2>
|
|
75
|
+
<p class="text-secondary mb-3">
|
|
76
|
+
Announcing our biggest update yet with enhanced performance and new features.
|
|
77
|
+
</p>
|
|
78
|
+
<div class="d-flex align-items-center text-secondary text-sm">
|
|
79
|
+
<span data-icon="calendar" class="me-2"></span>
|
|
80
|
+
<time>January 10, {{year}}</time>
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
</article>
|
|
84
|
+
|
|
85
|
+
<!-- Blog Post 3 -->
|
|
86
|
+
<article class="card h-100 hover shadow-md">
|
|
87
|
+
<div class="card-body">
|
|
88
|
+
<div class="d-flex gap-2 mb-3">
|
|
89
|
+
<span class="badge badge-warning">News</span>
|
|
90
|
+
<span class="badge badge-outline">4 min read</span>
|
|
91
|
+
</div>
|
|
92
|
+
<h2 class="h5 mb-2">
|
|
93
|
+
<a href="#" class="text-decoration-none">Building Responsive Layouts</a>
|
|
94
|
+
</h2>
|
|
95
|
+
<p class="text-secondary mb-3">
|
|
96
|
+
Master the grid system and create beautiful responsive designs.
|
|
97
|
+
</p>
|
|
98
|
+
<div class="d-flex align-items-center text-secondary text-sm">
|
|
99
|
+
<span data-icon="calendar" class="me-2"></span>
|
|
100
|
+
<time>January 5, {{year}}</time>
|
|
101
|
+
</div>
|
|
102
|
+
</div>
|
|
103
|
+
</article>
|
|
104
|
+
|
|
105
|
+
<!-- Blog Post 4 -->
|
|
106
|
+
<article class="card h-100 hover shadow-md">
|
|
107
|
+
<div class="card-body">
|
|
108
|
+
<div class="d-flex gap-2 mb-3">
|
|
109
|
+
<span class="badge badge-primary">Tutorial</span>
|
|
110
|
+
<span class="badge badge-outline">7 min read</span>
|
|
111
|
+
</div>
|
|
112
|
+
<h2 class="h5 mb-2">
|
|
113
|
+
<a href="#" class="text-decoration-none">Theme Customization Guide</a>
|
|
114
|
+
</h2>
|
|
115
|
+
<p class="text-secondary mb-3">
|
|
116
|
+
Create custom themes and override CSS variables to match your brand.
|
|
117
|
+
</p>
|
|
118
|
+
<div class="d-flex align-items-center text-secondary text-sm">
|
|
119
|
+
<span data-icon="calendar" class="me-2"></span>
|
|
120
|
+
<time>December 28, {{year}}</time>
|
|
121
|
+
</div>
|
|
122
|
+
</div>
|
|
123
|
+
</article>
|
|
124
|
+
|
|
125
|
+
<!-- Blog Post 5 -->
|
|
126
|
+
<article class="card h-100 hover shadow-md">
|
|
127
|
+
<div class="card-body">
|
|
128
|
+
<div class="d-flex gap-2 mb-3">
|
|
129
|
+
<span class="badge badge-info">Tips</span>
|
|
130
|
+
<span class="badge badge-outline">6 min read</span>
|
|
131
|
+
</div>
|
|
132
|
+
<h2 class="h5 mb-2">
|
|
133
|
+
<a href="#" class="text-decoration-none">10 Performance Optimization Tips</a>
|
|
134
|
+
</h2>
|
|
135
|
+
<p class="text-secondary mb-3">
|
|
136
|
+
Speed up your Domma applications with these proven optimization techniques.
|
|
137
|
+
</p>
|
|
138
|
+
<div class="d-flex align-items-center text-secondary text-sm">
|
|
139
|
+
<span data-icon="calendar" class="me-2"></span>
|
|
140
|
+
<time>December 20, {{year}}</time>
|
|
141
|
+
</div>
|
|
142
|
+
</div>
|
|
143
|
+
</article>
|
|
144
|
+
|
|
145
|
+
<!-- Blog Post 6 -->
|
|
146
|
+
<article class="card h-100 hover shadow-md">
|
|
147
|
+
<div class="card-body">
|
|
148
|
+
<div class="d-flex gap-2 mb-3">
|
|
149
|
+
<span class="badge badge-danger">Important</span>
|
|
150
|
+
<span class="badge badge-outline">2 min read</span>
|
|
151
|
+
</div>
|
|
152
|
+
<h2 class="h5 mb-2">
|
|
153
|
+
<a href="#" class="text-decoration-none">Security Best Practices</a>
|
|
154
|
+
</h2>
|
|
155
|
+
<p class="text-secondary mb-3">
|
|
156
|
+
Essential security considerations when building with Domma.
|
|
157
|
+
</p>
|
|
158
|
+
<div class="d-flex align-items-center text-secondary text-sm">
|
|
159
|
+
<span data-icon="calendar" class="me-2"></span>
|
|
160
|
+
<time>December 15, {{year}}</time>
|
|
161
|
+
</div>
|
|
162
|
+
</div>
|
|
163
|
+
</article>
|
|
164
|
+
</div>
|
|
165
|
+
</div>
|
|
166
|
+
</section>
|
|
167
|
+
|
|
168
|
+
<!-- Pagination -->
|
|
169
|
+
<section class="container py-6">
|
|
170
|
+
<nav aria-label="Blog pagination">
|
|
171
|
+
<ul class="pagination justify-content-center">
|
|
172
|
+
<li class="page-item disabled">
|
|
173
|
+
<a class="page-link" href="#" aria-label="Previous">
|
|
174
|
+
<span data-icon="chevron-left"></span>
|
|
175
|
+
</a>
|
|
176
|
+
</li>
|
|
177
|
+
<li class="page-item active"><a class="page-link" href="#">1</a></li>
|
|
178
|
+
<li class="page-item"><a class="page-link" href="#">2</a></li>
|
|
179
|
+
<li class="page-item"><a class="page-link" href="#">3</a></li>
|
|
180
|
+
<li class="page-item">
|
|
181
|
+
<a class="page-link" href="#" aria-label="Next">
|
|
182
|
+
<span data-icon="chevron-right"></span>
|
|
183
|
+
</a>
|
|
184
|
+
</li>
|
|
185
|
+
</ul>
|
|
186
|
+
</nav>
|
|
187
|
+
</section>
|
|
188
|
+
|
|
189
|
+
<!-- Newsletter Signup -->
|
|
190
|
+
<section class="bg-surface py-6">
|
|
191
|
+
<div class="container">
|
|
192
|
+
<div class="d-flex justify-content-center">
|
|
193
|
+
<div class="text-center" style="max-width: 600px;">
|
|
194
|
+
<h2 class="h3 mb-3">Subscribe to Our Newsletter</h2>
|
|
195
|
+
<p class="text-secondary mb-4">
|
|
196
|
+
Get the latest updates and tutorials delivered to your inbox.
|
|
197
|
+
</p>
|
|
198
|
+
<form class="d-flex gap-2">
|
|
199
|
+
<input type="email" class="form-control" placeholder="Enter your email" required>
|
|
200
|
+
<button type="submit" class="btn btn-primary">Subscribe</button>
|
|
201
|
+
</form>
|
|
202
|
+
</div>
|
|
203
|
+
</div>
|
|
204
|
+
</div>
|
|
205
|
+
</section>
|
|
206
|
+
|
|
207
|
+
<!-- Footer -->
|
|
208
|
+
<footer class="page-footer"></footer>
|
|
209
|
+
|
|
210
|
+
<!-- Domma JavaScript -->
|
|
211
|
+
<script src="../../dist/domma.min.js"></script>
|
|
212
|
+
|
|
213
|
+
<!-- App Initialization -->
|
|
214
|
+
<script src="../../js/app.js"></script>
|
|
215
|
+
<!-- Page-specific Initialization -->
|
|
216
|
+
<script src="blog.js"></script>
|
|
217
|
+
</body>
|
|
218
|
+
</html>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contact Page Initialization
|
|
3
|
+
* Form handling, validation, submission
|
|
4
|
+
*/
|
|
5
|
+
$(() => {
|
|
6
|
+
// Handle contact form submission
|
|
7
|
+
$('#contact-form').on('submit', function(e) {
|
|
8
|
+
e.preventDefault();
|
|
9
|
+
|
|
10
|
+
// Get form values using Domma
|
|
11
|
+
const formData = {
|
|
12
|
+
name: $('#name').val(),
|
|
13
|
+
email: $('#email').val(),
|
|
14
|
+
subject: $('#subject').val(),
|
|
15
|
+
message: $('#message').val()
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
// Show success message (in a real app, send to backend)
|
|
19
|
+
Domma.elements.toast({
|
|
20
|
+
message: 'Thank you! Your message has been sent successfully.',
|
|
21
|
+
type: 'success',
|
|
22
|
+
duration: 5000
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
// Reset form
|
|
26
|
+
$(this)[0].reset();
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
// Initialize accordion for FAQ
|
|
30
|
+
Domma.elements.accordion('#faq-accordion');
|
|
31
|
+
|
|
32
|
+
console.log('Contact page initialized');
|
|
33
|
+
});
|