@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.
Files changed (77) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +106 -0
  3. package/package.json +36 -0
  4. package/php/functions.php +92 -0
  5. package/project-template/package.json +29 -0
  6. package/project-template/postcss.config.js +6 -0
  7. package/project-template/squeditor.config.js +81 -0
  8. package/project-template/src/404.php +21 -0
  9. package/project-template/src/assets/css/squeditor-icons.css +4719 -0
  10. package/project-template/src/assets/css/tailwind.css +3 -0
  11. package/project-template/src/assets/css/uikit-components.css +14586 -0
  12. package/project-template/src/assets/js/gsap-advanced.js +26 -0
  13. package/project-template/src/assets/js/gsap-init.js +672 -0
  14. package/project-template/src/assets/js/gsap-modules/cursor-preview.js +132 -0
  15. package/project-template/src/assets/js/gsap-modules/cursor.js +456 -0
  16. package/project-template/src/assets/js/gsap-modules/loop-panels.js +78 -0
  17. package/project-template/src/assets/js/gsap-modules/marquee.js +106 -0
  18. package/project-template/src/assets/js/gsap-modules/pinned-panels.js +105 -0
  19. package/project-template/src/assets/js/gsap-modules/scroll-to.js +54 -0
  20. package/project-template/src/assets/js/gsap-modules/swipe-slider.js +121 -0
  21. package/project-template/src/assets/js/gsap-modules/text-mask.js +93 -0
  22. package/project-template/src/assets/js/gsap-modules/tilt.js +70 -0
  23. package/project-template/src/assets/js/main.js +302 -0
  24. package/project-template/src/assets/js/uikit-components.js +18171 -0
  25. package/project-template/src/assets/scss/_base.scss +140 -0
  26. package/project-template/src/assets/scss/_components.scss +165 -0
  27. package/project-template/src/assets/scss/_config.scss +13 -0
  28. package/project-template/src/assets/scss/_functions.scss +81 -0
  29. package/project-template/src/assets/scss/_tokens.scss +229 -0
  30. package/project-template/src/assets/scss/_transitions.scss +36 -0
  31. package/project-template/src/assets/scss/_uikit-overrides.scss +187 -0
  32. package/project-template/src/assets/scss/_uikit_dynamic.scss +43 -0
  33. package/project-template/src/assets/scss/_utilities.scss +31 -0
  34. package/project-template/src/assets/scss/custom.scss +10 -0
  35. package/project-template/src/assets/scss/main.scss +11 -0
  36. package/project-template/src/assets/static/fonts/squeditor-icons/squeditor-icons.eot +0 -0
  37. package/project-template/src/assets/static/fonts/squeditor-icons/squeditor-icons.svg +1183 -0
  38. package/project-template/src/assets/static/fonts/squeditor-icons/squeditor-icons.ttf +0 -0
  39. package/project-template/src/assets/static/fonts/squeditor-icons/squeditor-icons.woff +0 -0
  40. package/project-template/src/config/site-config.php +34 -0
  41. package/project-template/src/data/blog.php +21 -0
  42. package/project-template/src/data/portfolio.php +23 -0
  43. package/project-template/src/data/team.php +23 -0
  44. package/project-template/src/index.php +57 -0
  45. package/project-template/src/init.php +19 -0
  46. package/project-template/src/page-templates/base.php +39 -0
  47. package/project-template/src/page-templates/body-scripts.php +26 -0
  48. package/project-template/src/page-templates/head.php +47 -0
  49. package/project-template/src/page-templates/transition.php +45 -0
  50. package/project-template/src/sections/cards/cards-grid.php +34 -0
  51. package/project-template/src/sections/cards/cards-horizontal.php +28 -0
  52. package/project-template/src/sections/cta/cta-banner.php +34 -0
  53. package/project-template/src/sections/cta/cta-newsletter.php +19 -0
  54. package/project-template/src/sections/footer/layout-01.php +35 -0
  55. package/project-template/src/sections/header/layout-01.php +36 -0
  56. package/project-template/src/sections/hero/hero-centered.php +44 -0
  57. package/project-template/src/sections/hero/hero-split.php +132 -0
  58. package/project-template/src/sections/hero/hero-video.php +22 -0
  59. package/project-template/src/sections/sidebar/sidebar-right.php +11 -0
  60. package/project-template/src/template-parts/breadcrumbs.php +17 -0
  61. package/project-template/src/template-parts/footer.php +74 -0
  62. package/project-template/src/template-parts/header.php +120 -0
  63. package/project-template/src/template-parts/mega-menu.php +7 -0
  64. package/project-template/src/template-parts/nav.php +16 -0
  65. package/project-template/src/template-parts/page-title-bar.php +14 -0
  66. package/project-template/tailwind.config.js +26 -0
  67. package/project-template/vite.config.js +67 -0
  68. package/scripts/build-components.js +109 -0
  69. package/scripts/copy-static.js +150 -0
  70. package/scripts/dev-router.php +23 -0
  71. package/scripts/dev.js +55 -0
  72. package/scripts/get-port.js +27 -0
  73. package/scripts/package-customer.js +278 -0
  74. package/scripts/package-dist.js +54 -0
  75. package/scripts/scaffold.js +72 -0
  76. package/scripts/snapshot.js +74 -0
  77. 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
+ }