domma-cms 0.7.8 → 0.8.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/admin/css/admin.css +1 -1
- package/admin/js/app.js +1 -1
- package/admin/js/config/sidebar-config.js +1 -1
- package/admin/js/templates/effects.html +594 -0
- package/admin/js/views/effects.js +1 -0
- package/admin/js/views/index.js +1 -1
- package/admin/js/views/plugins.js +24 -12
- package/config/effects.json +6 -0
- package/config/plugins.json +4 -34
- package/package.json +1 -1
- package/plugins/demo-viewer/config.js +4 -0
- package/plugins/demo-viewer/plugin.js +36 -0
- package/plugins/demo-viewer/plugin.json +9 -0
- package/plugins/theme-switcher/admin/templates/theme-switcher.html +86 -0
- package/plugins/theme-switcher/admin/views/theme-switcher.js +65 -0
- package/plugins/theme-switcher/config.js +10 -0
- package/plugins/theme-switcher/plugin.js +26 -0
- package/plugins/theme-switcher/plugin.json +74 -0
- package/plugins/theme-switcher/public/inject-body.html +153 -0
- package/plugins/theme-switcher/public/inject-head.html +260 -0
- package/public/js/celebrations/core/canvas.js +9 -0
- package/public/js/celebrations/core/particles.js +1 -0
- package/public/js/celebrations/core/physics.js +1 -0
- package/public/js/celebrations/index.js +1 -0
- package/public/js/celebrations/themes/christmas.js +1 -0
- package/public/js/celebrations/themes/guy-fawkes.js +1 -0
- package/public/js/celebrations/themes/halloween.js +1 -0
- package/public/js/celebrations/themes/st-andrews.js +1 -0
- package/public/js/celebrations/themes/st-davids.js +1 -0
- package/public/js/celebrations/themes/st-georges.js +1 -0
- package/public/js/celebrations/themes/st-patricks.js +1 -0
- package/public/js/celebrations/themes/valentines.js +1 -0
- package/public/js/effects.js +1 -0
- package/server/routes/api/effects.js +23 -0
- package/server/server.js +2 -0
- package/server/services/markdown.js +125 -2
- package/server/services/plugins.js +1 -1
- package/server/templates/page.html +3 -0
- package/plugins/data-transfer/admin/templates/data-transfer.html +0 -172
- package/plugins/data-transfer/admin/views/data-transfer.js +0 -558
- package/plugins/data-transfer/config.js +0 -9
- package/plugins/data-transfer/plugin.js +0 -424
- package/plugins/data-transfer/plugin.json +0 -33
|
@@ -0,0 +1,594 @@
|
|
|
1
|
+
<div class="view-header">
|
|
2
|
+
<h1><span data-icon="sparkles"></span> Domma Effects</h1>
|
|
3
|
+
<div>
|
|
4
|
+
<button id="save-settings-btn" class="btn btn-primary">
|
|
5
|
+
<span data-icon="save"></span> Save
|
|
6
|
+
</button>
|
|
7
|
+
</div>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
<!-- Settings Card -->
|
|
11
|
+
<div class="card mb-4">
|
|
12
|
+
<div class="card-header"><h2>Settings</h2></div>
|
|
13
|
+
<div class="card-body">
|
|
14
|
+
<div class="row mb-3">
|
|
15
|
+
<div class="col">
|
|
16
|
+
<label class="form-check-label">
|
|
17
|
+
<input id="field-respect-motion" type="checkbox">
|
|
18
|
+
Respect <code>prefers-reduced-motion</code>
|
|
19
|
+
</label>
|
|
20
|
+
<span class="form-hint">When enabled, JS effects are skipped for users who prefer reduced motion. Content remains visible.</span>
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
<div class="row mb-3">
|
|
24
|
+
<div class="col-6">
|
|
25
|
+
<label class="form-label">Default animation duration (ms)</label>
|
|
26
|
+
<input id="field-default-duration" type="number" class="form-input" min="0" max="10000"
|
|
27
|
+
placeholder="600">
|
|
28
|
+
<span class="form-hint">Used by reveal when no <code>duration</code> attribute is specified.</span>
|
|
29
|
+
</div>
|
|
30
|
+
<div class="col-6">
|
|
31
|
+
<label class="form-label">Default reveal animation</label>
|
|
32
|
+
<select id="field-default-animation" class="form-select">
|
|
33
|
+
<option value="fade">Fade</option>
|
|
34
|
+
<option value="slide-up">Slide up</option>
|
|
35
|
+
<option value="slide-down">Slide down</option>
|
|
36
|
+
<option value="zoom">Zoom</option>
|
|
37
|
+
<option value="flip">Flip</option>
|
|
38
|
+
</select>
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
<div class="row">
|
|
42
|
+
<div class="col-6">
|
|
43
|
+
<label class="form-label">Default scroll threshold</label>
|
|
44
|
+
<input id="field-default-threshold" type="number" class="form-input" min="0" max="1" step="0.05"
|
|
45
|
+
placeholder="0.1">
|
|
46
|
+
<span class="form-hint">Fraction of element visible before reveal fires (0.0–1.0).</span>
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
<!-- Shortcode Reference Card -->
|
|
53
|
+
<div class="card mb-4">
|
|
54
|
+
<div class="card-header"><h2>Shortcode Reference</h2></div>
|
|
55
|
+
<div class="card-body">
|
|
56
|
+
<p class="text-muted mb-3">Use these shortcodes in any page's Markdown content. The <strong>Effects</strong>
|
|
57
|
+
toolbar
|
|
58
|
+
button in the editor inserts them automatically.</p>
|
|
59
|
+
|
|
60
|
+
<!-- Tabs -->
|
|
61
|
+
<div class="mb-3" style="display:flex;gap:6px;flex-wrap:wrap;">
|
|
62
|
+
<button class="btn btn-sm effects-tab-btn active" data-tab="entrance">Entrance</button>
|
|
63
|
+
<button class="btn btn-sm effects-tab-btn" data-tab="animation">Animation</button>
|
|
64
|
+
<button class="btn btn-sm effects-tab-btn" data-tab="text">Text</button>
|
|
65
|
+
<button class="btn btn-sm effects-tab-btn" data-tab="visual">Visual</button>
|
|
66
|
+
<button class="btn btn-sm effects-tab-btn" data-tab="examples">Examples</button>
|
|
67
|
+
<button class="btn btn-sm effects-tab-btn" data-tab="celebrations">Celebrations</button>
|
|
68
|
+
</div>
|
|
69
|
+
|
|
70
|
+
<!-- Entrance tab -->
|
|
71
|
+
<div id="tab-entrance" class="effects-tab-panel">
|
|
72
|
+
<h3 class="mb-2">Reveal</h3>
|
|
73
|
+
<p class="text-muted mb-2">Triggers a scroll-activated entrance animation when the element enters the
|
|
74
|
+
viewport.
|
|
75
|
+
Great for headers, cards, and feature sections.</p>
|
|
76
|
+
<pre class="code-block mb-2">[reveal animation="fade" duration="600" delay="0" threshold="0.1" once="true"]
|
|
77
|
+
## Your heading or content
|
|
78
|
+
|
|
79
|
+
Markdown **works** inside.
|
|
80
|
+
[/reveal]</pre>
|
|
81
|
+
<table class="table mb-3">
|
|
82
|
+
<thead>
|
|
83
|
+
<tr>
|
|
84
|
+
<th>Attribute</th>
|
|
85
|
+
<th>Default</th>
|
|
86
|
+
<th>Description</th>
|
|
87
|
+
</tr>
|
|
88
|
+
</thead>
|
|
89
|
+
<tbody>
|
|
90
|
+
<tr>
|
|
91
|
+
<td><code>animation</code></td>
|
|
92
|
+
<td>fade</td>
|
|
93
|
+
<td>fade, slide-up, slide-down, zoom, flip</td>
|
|
94
|
+
</tr>
|
|
95
|
+
<tr>
|
|
96
|
+
<td><code>duration</code></td>
|
|
97
|
+
<td>600</td>
|
|
98
|
+
<td>Animation duration in milliseconds</td>
|
|
99
|
+
</tr>
|
|
100
|
+
<tr>
|
|
101
|
+
<td><code>delay</code></td>
|
|
102
|
+
<td>0</td>
|
|
103
|
+
<td>Delay before animation starts (ms)</td>
|
|
104
|
+
</tr>
|
|
105
|
+
<tr>
|
|
106
|
+
<td><code>threshold</code></td>
|
|
107
|
+
<td>0.1</td>
|
|
108
|
+
<td>Fraction visible before triggering (0–1)</td>
|
|
109
|
+
</tr>
|
|
110
|
+
<tr>
|
|
111
|
+
<td><code>once</code></td>
|
|
112
|
+
<td>true</td>
|
|
113
|
+
<td>Only animate once (true/false)</td>
|
|
114
|
+
</tr>
|
|
115
|
+
</tbody>
|
|
116
|
+
</table>
|
|
117
|
+
<p class="text-muted" style="font-size:.85rem;"><strong>Tip:</strong> Use <code>delay</code> to stagger
|
|
118
|
+
multiple
|
|
119
|
+
reveal blocks for a cascade effect.</p>
|
|
120
|
+
</div>
|
|
121
|
+
|
|
122
|
+
<!-- Animation tab -->
|
|
123
|
+
<div id="tab-animation" class="effects-tab-panel">
|
|
124
|
+
<h3 class="mb-2">Breathe</h3>
|
|
125
|
+
<p class="text-muted mb-2">Continuous gentle scaling — makes elements feel alive. Ideal for hero images or
|
|
126
|
+
call-to-action buttons.</p>
|
|
127
|
+
<pre class="code-block mb-3">[breathe amplitude="8" duration="3000"]
|
|
128
|
+
Content that breathes.
|
|
129
|
+
[/breathe]</pre>
|
|
130
|
+
|
|
131
|
+
<h3 class="mb-2">Pulse</h3>
|
|
132
|
+
<p class="text-muted mb-2">A repeating scale pulse — stronger than breathe, good for alerts or badges.</p>
|
|
133
|
+
<pre class="code-block mb-3">[pulse scale="1.05" duration="1000"]
|
|
134
|
+
Pulsing content.
|
|
135
|
+
[/pulse]</pre>
|
|
136
|
+
|
|
137
|
+
<h3 class="mb-2">Shake</h3>
|
|
138
|
+
<p class="text-muted mb-2">One-shot horizontal or vertical shake. Use for error states or attention-grabbing
|
|
139
|
+
elements.</p>
|
|
140
|
+
<pre class="code-block mb-3">[shake intensity="5" duration="500" direction="horizontal"]
|
|
141
|
+
This will shake.
|
|
142
|
+
[/shake]</pre>
|
|
143
|
+
|
|
144
|
+
<h3 class="mb-2">CSS Animate</h3>
|
|
145
|
+
<p class="text-muted mb-2">Applies Domma CSS animation utility classes — no JavaScript required. Works
|
|
146
|
+
without the
|
|
147
|
+
plugin enabled.</p>
|
|
148
|
+
<pre class="code-block mb-2">[animate type="fade-in-up" duration="normal" delay="200" repeat="once"]
|
|
149
|
+
Content here.
|
|
150
|
+
[/animate]</pre>
|
|
151
|
+
<table class="table mb-3">
|
|
152
|
+
<thead>
|
|
153
|
+
<tr>
|
|
154
|
+
<th>Attribute</th>
|
|
155
|
+
<th>Values</th>
|
|
156
|
+
</tr>
|
|
157
|
+
</thead>
|
|
158
|
+
<tbody>
|
|
159
|
+
<tr>
|
|
160
|
+
<td><code>type</code></td>
|
|
161
|
+
<td>fade-in, fade-out, fade-in-up, fade-in-down, fade-in-left, fade-in-right, slide-in-up,
|
|
162
|
+
slide-in-down,
|
|
163
|
+
slide-in-left, slide-in-right, zoom-in, zoom-out, bounce, pulse, shake, spin, rotate-in, flip
|
|
164
|
+
</td>
|
|
165
|
+
</tr>
|
|
166
|
+
<tr>
|
|
167
|
+
<td><code>duration</code></td>
|
|
168
|
+
<td>fast, normal, slow, slower</td>
|
|
169
|
+
</tr>
|
|
170
|
+
<tr>
|
|
171
|
+
<td><code>delay</code></td>
|
|
172
|
+
<td>100, 200, 300, 500, 1000</td>
|
|
173
|
+
</tr>
|
|
174
|
+
<tr>
|
|
175
|
+
<td><code>repeat</code></td>
|
|
176
|
+
<td>once, infinite, repeat-2, repeat-3</td>
|
|
177
|
+
</tr>
|
|
178
|
+
</tbody>
|
|
179
|
+
</table>
|
|
180
|
+
</div>
|
|
181
|
+
|
|
182
|
+
<!-- Text tab -->
|
|
183
|
+
<div id="tab-text" class="effects-tab-panel">
|
|
184
|
+
<h3 class="mb-2">Typewriter (Scribe)</h3>
|
|
185
|
+
<p class="text-muted mb-2">Types text character by character. Supports a simple one-shot mode or a full
|
|
186
|
+
action script for sequenced multi-step animations.</p>
|
|
187
|
+
|
|
188
|
+
<h4 class="mb-1" style="font-size:.9rem;">Simple mode</h4>
|
|
189
|
+
<pre class="code-block mb-2">[scribe speed="50" cursor="true" loop="false"]
|
|
190
|
+
Your text appears letter by letter.
|
|
191
|
+
[/scribe]</pre>
|
|
192
|
+
|
|
193
|
+
<h4 class="mb-1" style="font-size:.9rem;">Script mode — action shortcodes</h4>
|
|
194
|
+
<pre class="code-block mb-2">[scribe loop="true" loop-delay="2000"]
|
|
195
|
+
[render effect="fade"]Hello, world![/render]
|
|
196
|
+
[wait]1500[/wait]
|
|
197
|
+
[undo /]
|
|
198
|
+
[render]Something else entirely.[/render]
|
|
199
|
+
[/scribe]</pre>
|
|
200
|
+
<p class="text-muted mb-2" style="font-size:.85rem;">When any <code>[render]</code>, <code>[wait]</code>, or
|
|
201
|
+
<code>[undo]</code> shortcode is present inside the body, script mode activates automatically.</p>
|
|
202
|
+
<table class="table mb-2">
|
|
203
|
+
<thead>
|
|
204
|
+
<tr>
|
|
205
|
+
<th>Action</th>
|
|
206
|
+
<th>Syntax</th>
|
|
207
|
+
<th>Description</th>
|
|
208
|
+
</tr>
|
|
209
|
+
</thead>
|
|
210
|
+
<tbody>
|
|
211
|
+
<tr>
|
|
212
|
+
<td><code>[render]</code></td>
|
|
213
|
+
<td><code>[render effect="fade"]Text[/render]</code></td>
|
|
214
|
+
<td>Type the text. Optional <code>effect</code>: fade, slide (for appearance)</td>
|
|
215
|
+
</tr>
|
|
216
|
+
<tr>
|
|
217
|
+
<td><code>[wait]</code></td>
|
|
218
|
+
<td><code>[wait]1500[/wait]</code></td>
|
|
219
|
+
<td>Pause for N milliseconds (number) or a CSS duration string (e.g. <code>2s</code>)</td>
|
|
220
|
+
</tr>
|
|
221
|
+
<tr>
|
|
222
|
+
<td><code>[undo]</code></td>
|
|
223
|
+
<td><code>[undo /]</code> or <code>[undo count="3" /]</code> or <code>[undo all="true" /]</code>
|
|
224
|
+
</td>
|
|
225
|
+
<td>Delete the last render action, N renders, or all renders</td>
|
|
226
|
+
</tr>
|
|
227
|
+
</tbody>
|
|
228
|
+
</table>
|
|
229
|
+
<table class="table mb-3">
|
|
230
|
+
<thead>
|
|
231
|
+
<tr>
|
|
232
|
+
<th>Attribute</th>
|
|
233
|
+
<th>Default</th>
|
|
234
|
+
<th>Description</th>
|
|
235
|
+
</tr>
|
|
236
|
+
</thead>
|
|
237
|
+
<tbody>
|
|
238
|
+
<tr>
|
|
239
|
+
<td><code>speed</code></td>
|
|
240
|
+
<td>50</td>
|
|
241
|
+
<td>Typing speed (ms per character)</td>
|
|
242
|
+
</tr>
|
|
243
|
+
<tr>
|
|
244
|
+
<td><code>delete-speed</code></td>
|
|
245
|
+
<td>30</td>
|
|
246
|
+
<td>Deletion speed (ms per character)</td>
|
|
247
|
+
</tr>
|
|
248
|
+
<tr>
|
|
249
|
+
<td><code>cursor</code></td>
|
|
250
|
+
<td>true</td>
|
|
251
|
+
<td>Show blinking cursor (true/false)</td>
|
|
252
|
+
</tr>
|
|
253
|
+
<tr>
|
|
254
|
+
<td><code>cursor-char</code></td>
|
|
255
|
+
<td>|</td>
|
|
256
|
+
<td>Character to use as cursor</td>
|
|
257
|
+
</tr>
|
|
258
|
+
<tr>
|
|
259
|
+
<td><code>cursor-type</code></td>
|
|
260
|
+
<td>—</td>
|
|
261
|
+
<td>Cursor style (block, underline, beam)</td>
|
|
262
|
+
</tr>
|
|
263
|
+
<tr>
|
|
264
|
+
<td><code>loop</code></td>
|
|
265
|
+
<td>false</td>
|
|
266
|
+
<td>Repeat script continuously (true/false)</td>
|
|
267
|
+
</tr>
|
|
268
|
+
<tr>
|
|
269
|
+
<td><code>loop-delay</code></td>
|
|
270
|
+
<td>1000</td>
|
|
271
|
+
<td>Pause before repeating (ms)</td>
|
|
272
|
+
</tr>
|
|
273
|
+
<tr>
|
|
274
|
+
<td><code>pause-on-hover</code></td>
|
|
275
|
+
<td>false</td>
|
|
276
|
+
<td>Pause animation while hovered (true/false)</td>
|
|
277
|
+
</tr>
|
|
278
|
+
</tbody>
|
|
279
|
+
</table>
|
|
280
|
+
|
|
281
|
+
<h3 class="mb-2">Scramble</h3>
|
|
282
|
+
<p class="text-muted mb-2">Reveals text through a character-scramble animation. Great for tech/data
|
|
283
|
+
aesthetics.</p>
|
|
284
|
+
<pre class="code-block mb-3">[scramble speed="50" loop="false"]
|
|
285
|
+
Scrambled reveal text.
|
|
286
|
+
[/scramble]</pre>
|
|
287
|
+
|
|
288
|
+
<h3 class="mb-2">Counter</h3>
|
|
289
|
+
<p class="text-muted mb-2">Animates a number from <code>from</code> to <code>to</code>. Use in stat
|
|
290
|
+
sections. This
|
|
291
|
+
shortcode is self-closing.</p>
|
|
292
|
+
<pre class="code-block mb-2">[counter to="100" from="0" prefix="$" suffix="+" duration="2000" /]</pre>
|
|
293
|
+
<table class="table mb-3">
|
|
294
|
+
<thead>
|
|
295
|
+
<tr>
|
|
296
|
+
<th>Attribute</th>
|
|
297
|
+
<th>Default</th>
|
|
298
|
+
<th>Description</th>
|
|
299
|
+
</tr>
|
|
300
|
+
</thead>
|
|
301
|
+
<tbody>
|
|
302
|
+
<tr>
|
|
303
|
+
<td><code>to</code></td>
|
|
304
|
+
<td>0</td>
|
|
305
|
+
<td>Target number</td>
|
|
306
|
+
</tr>
|
|
307
|
+
<tr>
|
|
308
|
+
<td><code>from</code></td>
|
|
309
|
+
<td>0</td>
|
|
310
|
+
<td>Starting number</td>
|
|
311
|
+
</tr>
|
|
312
|
+
<tr>
|
|
313
|
+
<td><code>duration</code></td>
|
|
314
|
+
<td>2000</td>
|
|
315
|
+
<td>Animation duration (ms)</td>
|
|
316
|
+
</tr>
|
|
317
|
+
<tr>
|
|
318
|
+
<td><code>prefix</code></td>
|
|
319
|
+
<td>—</td>
|
|
320
|
+
<td>Text before the number (e.g. $)</td>
|
|
321
|
+
</tr>
|
|
322
|
+
<tr>
|
|
323
|
+
<td><code>suffix</code></td>
|
|
324
|
+
<td>—</td>
|
|
325
|
+
<td>Text after the number (e.g. +)</td>
|
|
326
|
+
</tr>
|
|
327
|
+
<tr>
|
|
328
|
+
<td><code>decimals</code></td>
|
|
329
|
+
<td>0</td>
|
|
330
|
+
<td>Decimal places to display</td>
|
|
331
|
+
</tr>
|
|
332
|
+
<tr>
|
|
333
|
+
<td><code>separator</code></td>
|
|
334
|
+
<td>—</td>
|
|
335
|
+
<td>Thousands separator (e.g. ,)</td>
|
|
336
|
+
</tr>
|
|
337
|
+
</tbody>
|
|
338
|
+
</table>
|
|
339
|
+
<p class="text-muted" style="font-size:.85rem;"><strong>Tip:</strong> Counters work great in a grid — place
|
|
340
|
+
3–4
|
|
341
|
+
counter spans in a <code>[grid cols="4"]</code> for a stats section.</p>
|
|
342
|
+
</div>
|
|
343
|
+
|
|
344
|
+
<!-- Visual tab -->
|
|
345
|
+
<div id="tab-visual" class="effects-tab-panel">
|
|
346
|
+
<h3 class="mb-2">Ripple</h3>
|
|
347
|
+
<p class="text-muted mb-2">Click-triggered ripple effect on the element. Good for interactive content
|
|
348
|
+
blocks.</p>
|
|
349
|
+
<pre class="code-block mb-3">[ripple colour="#7c6af7" duration="600" opacity="0.3"]
|
|
350
|
+
Click this area for a ripple.
|
|
351
|
+
[/ripple]</pre>
|
|
352
|
+
|
|
353
|
+
<h3 class="mb-2">Twinkle</h3>
|
|
354
|
+
<p class="text-muted mb-2">Generates animated particle effects inside the element. Use for hero sections or
|
|
355
|
+
decorative areas.</p>
|
|
356
|
+
<pre class="code-block mb-3">[twinkle count="80" shape="star" colour="#fff" min-size="2" max-size="6"]
|
|
357
|
+
Content beneath the particles.
|
|
358
|
+
[/twinkle]</pre>
|
|
359
|
+
|
|
360
|
+
<h3 class="mb-2">Ambient Background</h3>
|
|
361
|
+
<p class="text-muted mb-2">Applies animated CSS background classes — no JavaScript needed. Works without the
|
|
362
|
+
plugin.</p>
|
|
363
|
+
<pre class="code-block mb-2">[ambient type="float-blobs" speed="slow" intensity="subtle"]
|
|
364
|
+
Content on animated background.
|
|
365
|
+
[/ambient]</pre>
|
|
366
|
+
<table class="table mb-3">
|
|
367
|
+
<thead>
|
|
368
|
+
<tr>
|
|
369
|
+
<th>Attribute</th>
|
|
370
|
+
<th>Values</th>
|
|
371
|
+
</tr>
|
|
372
|
+
</thead>
|
|
373
|
+
<tbody>
|
|
374
|
+
<tr>
|
|
375
|
+
<td><code>type</code></td>
|
|
376
|
+
<td>rotate-glow, rotate-dual, rotate-spotlight, float-blobs, float-orbs, float-particles, wave,
|
|
377
|
+
ripple,
|
|
378
|
+
aurora
|
|
379
|
+
</td>
|
|
380
|
+
</tr>
|
|
381
|
+
<tr>
|
|
382
|
+
<td><code>speed</code></td>
|
|
383
|
+
<td>slow, normal, fast</td>
|
|
384
|
+
</tr>
|
|
385
|
+
<tr>
|
|
386
|
+
<td><code>intensity</code></td>
|
|
387
|
+
<td>subtle, intense</td>
|
|
388
|
+
</tr>
|
|
389
|
+
</tbody>
|
|
390
|
+
</table>
|
|
391
|
+
</div>
|
|
392
|
+
|
|
393
|
+
<!-- Examples tab -->
|
|
394
|
+
<div id="tab-examples" class="effects-tab-panel">
|
|
395
|
+
<h3 class="mb-2">Hero section with typewriter</h3>
|
|
396
|
+
<pre class="code-block mb-3">[reveal animation="fade"]
|
|
397
|
+
# Welcome to our site
|
|
398
|
+
|
|
399
|
+
[scribe speed="40" cursor="true"]
|
|
400
|
+
We build things that matter.
|
|
401
|
+
[/scribe]
|
|
402
|
+
[/reveal]</pre>
|
|
403
|
+
|
|
404
|
+
<h3 class="mb-2">Stats row with counters</h3>
|
|
405
|
+
<pre class="code-block mb-3">[reveal animation="slide-up"]
|
|
406
|
+
[grid cols="3" gap="4"]
|
|
407
|
+
[col]
|
|
408
|
+
## [counter to="500" suffix="+" /]
|
|
409
|
+
Happy clients
|
|
410
|
+
[/col]
|
|
411
|
+
[col]
|
|
412
|
+
## [counter to="12" suffix=" years" /]
|
|
413
|
+
In business
|
|
414
|
+
[/col]
|
|
415
|
+
[col]
|
|
416
|
+
## [counter to="98" suffix="%" /]
|
|
417
|
+
Satisfaction
|
|
418
|
+
[/col]
|
|
419
|
+
[/grid]
|
|
420
|
+
[/reveal]</pre>
|
|
421
|
+
|
|
422
|
+
<h3 class="mb-2">Staggered card reveal</h3>
|
|
423
|
+
<pre class="code-block mb-3">[reveal animation="fade-in-up" delay="0"]
|
|
424
|
+
[card title="Feature One"]First card content.[/card]
|
|
425
|
+
[/reveal]
|
|
426
|
+
|
|
427
|
+
[reveal animation="fade-in-up" delay="150"]
|
|
428
|
+
[card title="Feature Two"]Second card content.[/card]
|
|
429
|
+
[/reveal]
|
|
430
|
+
|
|
431
|
+
[reveal animation="fade-in-up" delay="300"]
|
|
432
|
+
[card title="Feature Three"]Third card content.[/card]
|
|
433
|
+
[/reveal]</pre>
|
|
434
|
+
|
|
435
|
+
<h3 class="mb-2">Hero with ambient background</h3>
|
|
436
|
+
<pre class="code-block mb-3">[ambient type="aurora" speed="slow" intensity="subtle"]
|
|
437
|
+
[reveal animation="zoom"]
|
|
438
|
+
# Your headline here
|
|
439
|
+
|
|
440
|
+
A compelling subheading that draws users in.
|
|
441
|
+
[/reveal]
|
|
442
|
+
[/ambient]</pre>
|
|
443
|
+
|
|
444
|
+
<h3 class="mb-2">Christmas page with fireworks</h3>
|
|
445
|
+
<pre class="code-block mb-3">[celebrate theme="christmas" intensity="medium" /]
|
|
446
|
+
|
|
447
|
+
[fireworks]
|
|
448
|
+
[firework type="burst" colour="rainbow" /]
|
|
449
|
+
[firework type="sparkle" colour="primary" /]
|
|
450
|
+
[/fireworks]
|
|
451
|
+
|
|
452
|
+
[reveal animation="fade"]
|
|
453
|
+
# Merry Christmas!
|
|
454
|
+
[/reveal]</pre>
|
|
455
|
+
</div>
|
|
456
|
+
|
|
457
|
+
<!-- Celebrations tab -->
|
|
458
|
+
<div id="tab-celebrations" class="effects-tab-panel">
|
|
459
|
+
<h3 class="mb-2">Firework <span class="badge badge-info">CSS only</span></h3>
|
|
460
|
+
<p class="text-muted mb-2">Pure CSS particle effect — no JavaScript required. Works even without the plugin
|
|
461
|
+
enabled. Use self-closing for standalone particles, or wrapping to apply the firework classes to
|
|
462
|
+
content.</p>
|
|
463
|
+
<pre class="code-block mb-2">[firework type="burst" colour="rainbow" size="lg" continuous="true" /]</pre>
|
|
464
|
+
<pre class="code-block mb-2">[firework type="sparkle" colour="primary"]
|
|
465
|
+
Click me for a burst!
|
|
466
|
+
[/firework]</pre>
|
|
467
|
+
<table class="table mb-3">
|
|
468
|
+
<thead>
|
|
469
|
+
<tr>
|
|
470
|
+
<th>Attribute</th>
|
|
471
|
+
<th>Values</th>
|
|
472
|
+
<th>Description</th>
|
|
473
|
+
</tr>
|
|
474
|
+
</thead>
|
|
475
|
+
<tbody>
|
|
476
|
+
<tr>
|
|
477
|
+
<td><code>type</code></td>
|
|
478
|
+
<td>burst, sparkle, trail</td>
|
|
479
|
+
<td>Firework particle shape</td>
|
|
480
|
+
</tr>
|
|
481
|
+
<tr>
|
|
482
|
+
<td><code>colour</code></td>
|
|
483
|
+
<td>rainbow, primary, info, success, warning, danger</td>
|
|
484
|
+
<td>Particle colour theme</td>
|
|
485
|
+
</tr>
|
|
486
|
+
<tr>
|
|
487
|
+
<td><code>size</code></td>
|
|
488
|
+
<td>sm, md, lg</td>
|
|
489
|
+
<td>Particle size (default: md)</td>
|
|
490
|
+
</tr>
|
|
491
|
+
<tr>
|
|
492
|
+
<td><code>continuous</code></td>
|
|
493
|
+
<td>true / false</td>
|
|
494
|
+
<td>Loop the animation continuously</td>
|
|
495
|
+
</tr>
|
|
496
|
+
<tr>
|
|
497
|
+
<td><code>hover</code></td>
|
|
498
|
+
<td>true / false</td>
|
|
499
|
+
<td>Only animate on mouse hover</td>
|
|
500
|
+
</tr>
|
|
501
|
+
</tbody>
|
|
502
|
+
</table>
|
|
503
|
+
|
|
504
|
+
<h3 class="mb-2">Fireworks Container <span class="badge badge-info">CSS only</span></h3>
|
|
505
|
+
<p class="text-muted mb-2">Groups multiple firework elements into a positioned overlay container.</p>
|
|
506
|
+
<pre class="code-block mb-3">[fireworks]
|
|
507
|
+
[firework type="burst" colour="rainbow" /]
|
|
508
|
+
[firework type="sparkle" colour="primary" /]
|
|
509
|
+
[firework type="trail" colour="warning" /]
|
|
510
|
+
[/fireworks]</pre>
|
|
511
|
+
|
|
512
|
+
<h3 class="mb-2">Celebrate <span class="badge badge-warning">Requires plugin JS</span></h3>
|
|
513
|
+
<p class="text-muted mb-2">Canvas-based seasonal particle system. Auto-detects the active celebration based
|
|
514
|
+
on
|
|
515
|
+
today's date, or specify a theme manually. Skipped automatically when
|
|
516
|
+
<code>prefers-reduced-motion</code> is active.</p>
|
|
517
|
+
<pre class="code-block mb-2">[celebrate theme="auto" intensity="medium" /]</pre>
|
|
518
|
+
<pre class="code-block mb-2">[celebrate theme="christmas" intensity="heavy" /]</pre>
|
|
519
|
+
<table class="table mb-3">
|
|
520
|
+
<thead>
|
|
521
|
+
<tr>
|
|
522
|
+
<th>Theme</th>
|
|
523
|
+
<th>Active dates</th>
|
|
524
|
+
</tr>
|
|
525
|
+
</thead>
|
|
526
|
+
<tbody>
|
|
527
|
+
<tr>
|
|
528
|
+
<td><code>auto</code></td>
|
|
529
|
+
<td>Detects automatically from the table below</td>
|
|
530
|
+
</tr>
|
|
531
|
+
<tr>
|
|
532
|
+
<td><code>christmas</code></td>
|
|
533
|
+
<td>1 Dec – 1 Jan (snowflakes)</td>
|
|
534
|
+
</tr>
|
|
535
|
+
<tr>
|
|
536
|
+
<td><code>halloween</code></td>
|
|
537
|
+
<td>26 Oct – 31 Oct (bats & pumpkins)</td>
|
|
538
|
+
</tr>
|
|
539
|
+
<tr>
|
|
540
|
+
<td><code>valentines</code></td>
|
|
541
|
+
<td>9 Feb – 14 Feb (hearts)</td>
|
|
542
|
+
</tr>
|
|
543
|
+
<tr>
|
|
544
|
+
<td><code>guy-fawkes</code></td>
|
|
545
|
+
<td>1 Nov – 5 Nov (fireworks)</td>
|
|
546
|
+
</tr>
|
|
547
|
+
<tr>
|
|
548
|
+
<td><code>st-patricks</code></td>
|
|
549
|
+
<td>12 Mar – 17 Mar (shamrocks)</td>
|
|
550
|
+
</tr>
|
|
551
|
+
<tr>
|
|
552
|
+
<td><code>st-davids</code></td>
|
|
553
|
+
<td>24 Feb – 1 Mar (daffodils)</td>
|
|
554
|
+
</tr>
|
|
555
|
+
<tr>
|
|
556
|
+
<td><code>st-georges</code></td>
|
|
557
|
+
<td>18 Apr – 23 Apr (roses)</td>
|
|
558
|
+
</tr>
|
|
559
|
+
<tr>
|
|
560
|
+
<td><code>st-andrews</code></td>
|
|
561
|
+
<td>25 Nov – 30 Nov (thistles)</td>
|
|
562
|
+
</tr>
|
|
563
|
+
</tbody>
|
|
564
|
+
</table>
|
|
565
|
+
<table class="table mb-3">
|
|
566
|
+
<thead>
|
|
567
|
+
<tr>
|
|
568
|
+
<th>Attribute</th>
|
|
569
|
+
<th>Values</th>
|
|
570
|
+
<th>Description</th>
|
|
571
|
+
</tr>
|
|
572
|
+
</thead>
|
|
573
|
+
<tbody>
|
|
574
|
+
<tr>
|
|
575
|
+
<td><code>theme</code></td>
|
|
576
|
+
<td>auto, christmas, halloween, valentines, guy-fawkes, st-patricks, st-davids, st-georges,
|
|
577
|
+
st-andrews
|
|
578
|
+
</td>
|
|
579
|
+
<td>Theme to use (default: auto)</td>
|
|
580
|
+
</tr>
|
|
581
|
+
<tr>
|
|
582
|
+
<td><code>intensity</code></td>
|
|
583
|
+
<td>light, medium, heavy</td>
|
|
584
|
+
<td>Particle density (default: medium)</td>
|
|
585
|
+
</tr>
|
|
586
|
+
</tbody>
|
|
587
|
+
</table>
|
|
588
|
+
<p class="text-muted"><strong>Tip:</strong> CSS fireworks (<code>[firework]</code>) render instantly with no
|
|
589
|
+
JS.
|
|
590
|
+
Canvas celebrations (<code>[celebrate]</code>) load the JS module on demand and degrade silently if
|
|
591
|
+
unavailable.</p>
|
|
592
|
+
</div>
|
|
593
|
+
</div>
|
|
594
|
+
</div>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{apiRequest as s}from"/admin/js/api.js";export const effectsView={templateUrl:"/admin/js/templates/effects.html",async onMount(t){let e={};try{e=await s("/effects/settings")}catch{E.toast("Could not load settings.",{type:"error"})}t.find("#field-respect-motion").prop("checked",e.respectMotion!==!1),t.find("#field-default-duration").val(e.defaultDuration??600),t.find("#field-default-animation").val(e.defaultAnimation||"fade"),t.find("#field-default-threshold").val(e.defaultThreshold??.1),t.find("#save-settings-btn").off("click").on("click",async()=>{const a={respectMotion:t.find("#field-respect-motion").prop("checked"),defaultDuration:parseInt(t.find("#field-default-duration").val(),10)||600,defaultAnimation:t.find("#field-default-animation").val(),defaultThreshold:parseFloat(t.find("#field-default-threshold").val())||.1};try{await s("/effects/settings",{method:"PUT",body:JSON.stringify(a)}),E.toast("Settings saved.",{type:"success"})}catch{E.toast("Failed to save settings.",{type:"error"})}}),t.find(".effects-tab-btn").on("click",function(){const a=$(this).data("tab");t.find(".effects-tab-btn").removeClass("active"),$(this).addClass("active"),t.find(".effects-tab-panel").hide(),t.find(`#tab-${a}`).show()}),t.find(".effects-tab-panel").hide(),t.find("#tab-entrance").show(),Domma.icons.scan()}};
|
package/admin/js/views/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{dashboardView as o}from"./dashboard.js";import{pagesView as i}from"./pages.js";import{pageEditorView as r}from"./page-editor.js";import{settingsView as
|
|
1
|
+
import{dashboardView as o}from"./dashboard.js";import{pagesView as i}from"./pages.js";import{pageEditorView as r}from"./page-editor.js";import{settingsView as e}from"./settings.js";import{navigationView as t}from"./navigation.js";import{layoutsView as m}from"./layouts.js";import{mediaView as s}from"./media.js";import{loginView as f}from"./login.js";import{usersView as p}from"./users.js";import{userEditorView as w}from"./user-editor.js";import{pluginsView as V}from"./plugins.js";import{documentationView as n}from"./documentation.js";import{tutorialsView as l}from"./tutorials.js";import{apiReferenceView as c}from"./api-reference.js";import{collectionsView as a}from"./collections.js";import{collectionEditorView as d}from"./collection-editor.js";import{collectionEntriesView as E}from"./collection-entries.js";import{formsView as u}from"./forms.js";import{formEditorView as g}from"./form-editor.js";import{formSubmissionsView as v}from"./form-submissions.js";import{viewsListView as b}from"./views-list.js";import{viewEditorView as k}from"./view-editor.js";import{viewPreviewView as y}from"./view-preview.js";import{actionsListView as L}from"./actions-list.js";import{actionEditorView as P}from"./action-editor.js";import{proDocsView as h}from"./pro-docs.js";import{blocksView as D}from"./blocks.js";import{blockEditorView as R}from"./block-editor.js";import{myProfileView as S}from"./my-profile.js";import{rolesView as x}from"./roles.js";import{roleEditorView as j}from"./role-editor.js";import{effectsView as q}from"./effects.js";export const views={dashboard:o,pages:i,pageEditor:r,settings:e,navigation:t,layouts:m,media:s,login:f,users:p,userEditor:w,plugins:V,documentation:n,tutorials:l,apiReference:c,collections:a,collectionEditor:d,collectionEntries:E,forms:u,formEditor:g,formSubmissions:v,viewsList:b,viewEditor:k,viewPreview:y,actionsList:L,actionEditor:P,proDocs:h,blocks:D,blockEditor:R,myProfile:S,roles:x,roleEditor:j,effects:q};
|