@squeditor/squeditor-framework 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.
- package/LICENSE +21 -0
- package/README.md +106 -0
- package/package.json +36 -0
- package/php/functions.php +92 -0
- package/project-template/package.json +29 -0
- package/project-template/postcss.config.js +6 -0
- package/project-template/squeditor.config.js +81 -0
- package/project-template/src/404.php +21 -0
- package/project-template/src/assets/css/squeditor-icons.css +4719 -0
- package/project-template/src/assets/css/tailwind.css +3 -0
- package/project-template/src/assets/css/uikit-components.css +14586 -0
- package/project-template/src/assets/js/gsap-advanced.js +26 -0
- package/project-template/src/assets/js/gsap-init.js +672 -0
- package/project-template/src/assets/js/gsap-modules/cursor-preview.js +132 -0
- package/project-template/src/assets/js/gsap-modules/cursor.js +456 -0
- package/project-template/src/assets/js/gsap-modules/loop-panels.js +78 -0
- package/project-template/src/assets/js/gsap-modules/marquee.js +106 -0
- package/project-template/src/assets/js/gsap-modules/pinned-panels.js +105 -0
- package/project-template/src/assets/js/gsap-modules/scroll-to.js +54 -0
- package/project-template/src/assets/js/gsap-modules/swipe-slider.js +121 -0
- package/project-template/src/assets/js/gsap-modules/text-mask.js +93 -0
- package/project-template/src/assets/js/gsap-modules/tilt.js +70 -0
- package/project-template/src/assets/js/main.js +302 -0
- package/project-template/src/assets/js/uikit-components.js +18171 -0
- package/project-template/src/assets/scss/_base.scss +140 -0
- package/project-template/src/assets/scss/_components.scss +165 -0
- package/project-template/src/assets/scss/_config.scss +13 -0
- package/project-template/src/assets/scss/_functions.scss +81 -0
- package/project-template/src/assets/scss/_tokens.scss +229 -0
- package/project-template/src/assets/scss/_transitions.scss +36 -0
- package/project-template/src/assets/scss/_uikit-overrides.scss +187 -0
- package/project-template/src/assets/scss/_uikit_dynamic.scss +43 -0
- package/project-template/src/assets/scss/_utilities.scss +31 -0
- package/project-template/src/assets/scss/custom.scss +10 -0
- package/project-template/src/assets/scss/main.scss +11 -0
- package/project-template/src/assets/static/fonts/squeditor-icons/squeditor-icons.eot +0 -0
- package/project-template/src/assets/static/fonts/squeditor-icons/squeditor-icons.svg +1183 -0
- package/project-template/src/assets/static/fonts/squeditor-icons/squeditor-icons.ttf +0 -0
- package/project-template/src/assets/static/fonts/squeditor-icons/squeditor-icons.woff +0 -0
- package/project-template/src/config/site-config.php +34 -0
- package/project-template/src/data/blog.php +21 -0
- package/project-template/src/data/portfolio.php +23 -0
- package/project-template/src/data/team.php +23 -0
- package/project-template/src/index.php +57 -0
- package/project-template/src/init.php +19 -0
- package/project-template/src/page-templates/base.php +39 -0
- package/project-template/src/page-templates/body-scripts.php +26 -0
- package/project-template/src/page-templates/head.php +47 -0
- package/project-template/src/page-templates/transition.php +45 -0
- package/project-template/src/sections/cards/cards-grid.php +34 -0
- package/project-template/src/sections/cards/cards-horizontal.php +28 -0
- package/project-template/src/sections/cta/cta-banner.php +34 -0
- package/project-template/src/sections/cta/cta-newsletter.php +19 -0
- package/project-template/src/sections/footer/layout-01.php +35 -0
- package/project-template/src/sections/header/layout-01.php +36 -0
- package/project-template/src/sections/hero/hero-centered.php +44 -0
- package/project-template/src/sections/hero/hero-split.php +132 -0
- package/project-template/src/sections/hero/hero-video.php +22 -0
- package/project-template/src/sections/sidebar/sidebar-right.php +11 -0
- package/project-template/src/template-parts/breadcrumbs.php +17 -0
- package/project-template/src/template-parts/footer.php +74 -0
- package/project-template/src/template-parts/header.php +120 -0
- package/project-template/src/template-parts/mega-menu.php +7 -0
- package/project-template/src/template-parts/nav.php +16 -0
- package/project-template/src/template-parts/page-title-bar.php +14 -0
- package/project-template/tailwind.config.js +26 -0
- package/project-template/vite.config.js +67 -0
- package/scripts/build-components.js +109 -0
- package/scripts/copy-static.js +150 -0
- package/scripts/dev-router.php +23 -0
- package/scripts/dev.js +55 -0
- package/scripts/get-port.js +27 -0
- package/scripts/package-customer.js +278 -0
- package/scripts/package-dist.js +54 -0
- package/scripts/scaffold.js +72 -0
- package/scripts/snapshot.js +74 -0
- package/uikit-manifest.json +248 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const http = require('http');
|
|
4
|
+
const { spawn } = require('child_process');
|
|
5
|
+
|
|
6
|
+
const projectRoot = process.cwd();
|
|
7
|
+
const config = require(path.join(projectRoot, 'squeditor.config.js'));
|
|
8
|
+
|
|
9
|
+
const { baseUrl, pages, outputDir, rewriteExtension } = config.snapshot;
|
|
10
|
+
const distDir = path.join(projectRoot, outputDir);
|
|
11
|
+
|
|
12
|
+
fs.mkdirSync(distDir, { recursive: true });
|
|
13
|
+
|
|
14
|
+
// Start PHP built-in server
|
|
15
|
+
const phpServer = spawn('php', [
|
|
16
|
+
'-S', '127.0.0.1:' + config.devServer.port,
|
|
17
|
+
'-t', path.join(projectRoot, 'src')
|
|
18
|
+
], {
|
|
19
|
+
stdio: 'ignore',
|
|
20
|
+
env: { ...process.env, SQUEDITOR_SNAPSHOT: '1' }
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
// Wait for PHP server to start
|
|
24
|
+
setTimeout(async () => {
|
|
25
|
+
console.log('[Squeditor] 📸 Starting snapshot...');
|
|
26
|
+
|
|
27
|
+
const themes = config.themes || { default: { pages: config.snapshot.pages, distSubfolder: '' } };
|
|
28
|
+
|
|
29
|
+
for (const [themeKey, theme] of Object.entries(themes)) {
|
|
30
|
+
const themeDistDir = path.join(distDir, theme.distSubfolder || '');
|
|
31
|
+
fs.mkdirSync(themeDistDir, { recursive: true });
|
|
32
|
+
|
|
33
|
+
for (const pagePath of theme.pages) {
|
|
34
|
+
try {
|
|
35
|
+
console.log(`[Squeditor] Fetching ${pagePath} (Theme: ${themeKey})...`);
|
|
36
|
+
const urlToFetch = `${baseUrl}${pagePath}?theme=${themeKey}&snapshot=1`;
|
|
37
|
+
const html = await fetchPage(urlToFetch);
|
|
38
|
+
const rewrittenHtml = rewriteLinks(html);
|
|
39
|
+
|
|
40
|
+
// Remove leading slash for local save path
|
|
41
|
+
let savePath = pagePath.startsWith('/') ? pagePath.slice(1) : pagePath;
|
|
42
|
+
if (savePath === '') savePath = 'index.html';
|
|
43
|
+
if (rewriteExtension && savePath.endsWith('.php')) {
|
|
44
|
+
savePath = savePath.replace(/\.php$/, '.html');
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const fullPath = path.join(themeDistDir, savePath);
|
|
48
|
+
fs.mkdirSync(path.dirname(fullPath), { recursive: true });
|
|
49
|
+
fs.writeFileSync(fullPath, rewrittenHtml);
|
|
50
|
+
} catch (err) {
|
|
51
|
+
console.error(`[Squeditor] Failed to snapshot ${pagePath}:`, err.message);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
phpServer.kill();
|
|
57
|
+
console.log('[Squeditor] 🏁 Snapshot complete.');
|
|
58
|
+
}, 1500);
|
|
59
|
+
|
|
60
|
+
function fetchPage(url) {
|
|
61
|
+
return new Promise((resolve, reject) => {
|
|
62
|
+
http.get(url, (res) => {
|
|
63
|
+
let data = '';
|
|
64
|
+
res.on('data', chunk => data += chunk);
|
|
65
|
+
res.on('end', () => resolve(data));
|
|
66
|
+
}).on('error', reject);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function rewriteLinks(html) {
|
|
71
|
+
if (!rewriteExtension) return html;
|
|
72
|
+
// Replace .php hrefs with .html
|
|
73
|
+
return html.replace(/href="([^"]*?)\.php([^"]*?)"/g, 'href="$1.html$2"');
|
|
74
|
+
}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_core": {
|
|
3
|
+
"js": [
|
|
4
|
+
"node_modules/uikit/dist/js/uikit.js"
|
|
5
|
+
],
|
|
6
|
+
"css": [
|
|
7
|
+
"node_modules/uikit/src/scss/variables.scss",
|
|
8
|
+
"node_modules/uikit/src/scss/mixins.scss",
|
|
9
|
+
"node_modules/uikit/src/scss/components/mixin.scss"
|
|
10
|
+
]
|
|
11
|
+
},
|
|
12
|
+
"sticky": {
|
|
13
|
+
"js": [],
|
|
14
|
+
"css": [
|
|
15
|
+
"node_modules/uikit/src/scss/components/sticky.scss"
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
"utility": {
|
|
19
|
+
"js": [],
|
|
20
|
+
"css": [
|
|
21
|
+
"node_modules/uikit/src/scss/components/utility.scss"
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
"animation": {
|
|
25
|
+
"js": [],
|
|
26
|
+
"css": [
|
|
27
|
+
"node_modules/uikit/src/scss/components/animation.scss"
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
"visibility": {
|
|
31
|
+
"js": [],
|
|
32
|
+
"css": [
|
|
33
|
+
"node_modules/uikit/src/scss/components/visibility.scss"
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
"width": {
|
|
37
|
+
"js": [],
|
|
38
|
+
"css": [
|
|
39
|
+
"node_modules/uikit/src/scss/components/width.scss"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"height": {
|
|
43
|
+
"js": [],
|
|
44
|
+
"css": [
|
|
45
|
+
"node_modules/uikit/src/scss/components/height.scss"
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"position": {
|
|
49
|
+
"js": [],
|
|
50
|
+
"css": [
|
|
51
|
+
"node_modules/uikit/src/scss/components/position.scss"
|
|
52
|
+
]
|
|
53
|
+
},
|
|
54
|
+
"cover": {
|
|
55
|
+
"js": [],
|
|
56
|
+
"css": [
|
|
57
|
+
"node_modules/uikit/src/scss/components/cover.scss"
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
"grid": {
|
|
61
|
+
"js": [],
|
|
62
|
+
"css": [
|
|
63
|
+
"node_modules/uikit/src/scss/components/grid.scss"
|
|
64
|
+
]
|
|
65
|
+
},
|
|
66
|
+
"nav": {
|
|
67
|
+
"js": [],
|
|
68
|
+
"css": [
|
|
69
|
+
"node_modules/uikit/src/scss/components/nav.scss"
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
"navbar": {
|
|
73
|
+
"js": [],
|
|
74
|
+
"css": [
|
|
75
|
+
"node_modules/uikit/src/scss/components/navbar.scss"
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
"modal": {
|
|
79
|
+
"js": [],
|
|
80
|
+
"css": [
|
|
81
|
+
"node_modules/uikit/src/scss/components/modal.scss",
|
|
82
|
+
"node_modules/uikit/src/scss/components/close.scss"
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
"close": {
|
|
86
|
+
"js": [],
|
|
87
|
+
"css": [
|
|
88
|
+
"node_modules/uikit/src/scss/components/close.scss"
|
|
89
|
+
]
|
|
90
|
+
},
|
|
91
|
+
"accordion": {
|
|
92
|
+
"js": [],
|
|
93
|
+
"css": [
|
|
94
|
+
"node_modules/uikit/src/scss/components/accordion.scss"
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
"tabs": {
|
|
98
|
+
"js": [],
|
|
99
|
+
"css": [
|
|
100
|
+
"node_modules/uikit/src/scss/components/tab.scss"
|
|
101
|
+
]
|
|
102
|
+
},
|
|
103
|
+
"switcher": {
|
|
104
|
+
"js": [],
|
|
105
|
+
"css": [
|
|
106
|
+
"node_modules/uikit/src/scss/components/switcher.scss"
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
"offcanvas": {
|
|
110
|
+
"js": [],
|
|
111
|
+
"css": [
|
|
112
|
+
"node_modules/uikit/src/scss/components/offcanvas.scss"
|
|
113
|
+
]
|
|
114
|
+
},
|
|
115
|
+
"drop": {
|
|
116
|
+
"js": [],
|
|
117
|
+
"css": [
|
|
118
|
+
"node_modules/uikit/src/scss/components/drop.scss"
|
|
119
|
+
]
|
|
120
|
+
},
|
|
121
|
+
"dropbar": {
|
|
122
|
+
"js": [],
|
|
123
|
+
"css": [
|
|
124
|
+
"node_modules/uikit/src/scss/components/dropbar.scss"
|
|
125
|
+
]
|
|
126
|
+
},
|
|
127
|
+
"dropnav": {
|
|
128
|
+
"js": [],
|
|
129
|
+
"css": [
|
|
130
|
+
"node_modules/uikit/src/scss/components/dropnav.scss"
|
|
131
|
+
]
|
|
132
|
+
},
|
|
133
|
+
"dropdown": {
|
|
134
|
+
"js": [],
|
|
135
|
+
"css": [
|
|
136
|
+
"node_modules/uikit/src/scss/components/dropdown.scss"
|
|
137
|
+
]
|
|
138
|
+
},
|
|
139
|
+
"tooltip": {
|
|
140
|
+
"js": [
|
|
141
|
+
"node_modules/uikit/dist/js/components/tooltip.js"
|
|
142
|
+
],
|
|
143
|
+
"css": [
|
|
144
|
+
"node_modules/uikit/src/scss/components/tooltip.scss"
|
|
145
|
+
]
|
|
146
|
+
},
|
|
147
|
+
"parallax": {
|
|
148
|
+
"js": [
|
|
149
|
+
"node_modules/uikit/dist/js/components/parallax.js"
|
|
150
|
+
],
|
|
151
|
+
"css": []
|
|
152
|
+
},
|
|
153
|
+
"scrollspy": {
|
|
154
|
+
"js": [],
|
|
155
|
+
"css": []
|
|
156
|
+
},
|
|
157
|
+
"transition": {
|
|
158
|
+
"js": [],
|
|
159
|
+
"css": [
|
|
160
|
+
"node_modules/uikit/src/scss/components/transition.scss"
|
|
161
|
+
]
|
|
162
|
+
},
|
|
163
|
+
"spinner": {
|
|
164
|
+
"js": [],
|
|
165
|
+
"css": [
|
|
166
|
+
"node_modules/uikit/src/scss/components/spinner.scss"
|
|
167
|
+
]
|
|
168
|
+
},
|
|
169
|
+
"inverse": {
|
|
170
|
+
"js": [],
|
|
171
|
+
"css": [
|
|
172
|
+
"node_modules/uikit/src/scss/components/inverse.scss"
|
|
173
|
+
]
|
|
174
|
+
},
|
|
175
|
+
"svg": {
|
|
176
|
+
"js": [],
|
|
177
|
+
"css": [
|
|
178
|
+
"node_modules/uikit/src/scss/components/svg.scss"
|
|
179
|
+
]
|
|
180
|
+
},
|
|
181
|
+
"video": {
|
|
182
|
+
"js": [],
|
|
183
|
+
"css": []
|
|
184
|
+
},
|
|
185
|
+
"iframe": {
|
|
186
|
+
"js": [],
|
|
187
|
+
"css": []
|
|
188
|
+
},
|
|
189
|
+
"notification": {
|
|
190
|
+
"js": [
|
|
191
|
+
"node_modules/uikit/dist/js/components/notification.js"
|
|
192
|
+
],
|
|
193
|
+
"css": [
|
|
194
|
+
"node_modules/uikit/src/scss/components/notification.scss"
|
|
195
|
+
]
|
|
196
|
+
},
|
|
197
|
+
"pagination": {
|
|
198
|
+
"js": [],
|
|
199
|
+
"css": [
|
|
200
|
+
"node_modules/uikit/src/scss/components/pagination.scss"
|
|
201
|
+
]
|
|
202
|
+
},
|
|
203
|
+
"dotnav": {
|
|
204
|
+
"js": [],
|
|
205
|
+
"css": [
|
|
206
|
+
"node_modules/uikit/src/scss/components/dotnav.scss"
|
|
207
|
+
]
|
|
208
|
+
},
|
|
209
|
+
"slidenav": {
|
|
210
|
+
"js": [],
|
|
211
|
+
"css": [
|
|
212
|
+
"node_modules/uikit/src/scss/components/slidenav.scss"
|
|
213
|
+
]
|
|
214
|
+
},
|
|
215
|
+
"slider": {
|
|
216
|
+
"js": [
|
|
217
|
+
"node_modules/uikit/dist/js/components/slider.js"
|
|
218
|
+
],
|
|
219
|
+
"css": [
|
|
220
|
+
"node_modules/uikit/src/scss/components/slider.scss"
|
|
221
|
+
]
|
|
222
|
+
},
|
|
223
|
+
"slideshow": {
|
|
224
|
+
"js": [
|
|
225
|
+
"node_modules/uikit/dist/js/components/slideshow.js"
|
|
226
|
+
],
|
|
227
|
+
"css": [
|
|
228
|
+
"node_modules/uikit/src/scss/components/slideshow.scss"
|
|
229
|
+
]
|
|
230
|
+
},
|
|
231
|
+
"lightbox": {
|
|
232
|
+
"js": [
|
|
233
|
+
"node_modules/uikit/dist/js/components/lightbox.js",
|
|
234
|
+
"node_modules/uikit/dist/js/components/lightbox-panel.js"
|
|
235
|
+
],
|
|
236
|
+
"css": [
|
|
237
|
+
"node_modules/uikit/src/scss/components/lightbox.scss"
|
|
238
|
+
]
|
|
239
|
+
},
|
|
240
|
+
"icon": {
|
|
241
|
+
"js": [
|
|
242
|
+
"node_modules/uikit/dist/js/uikit-icons.min.js"
|
|
243
|
+
],
|
|
244
|
+
"css": [
|
|
245
|
+
"node_modules/uikit/src/scss/components/icon.scss"
|
|
246
|
+
]
|
|
247
|
+
}
|
|
248
|
+
}
|