domma-cms 0.6.16 → 0.6.21

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 (44) hide show
  1. package/admin/js/api.js +1 -1
  2. package/admin/js/app.js +4 -4
  3. package/admin/js/lib/markdown-toolbar.js +14 -14
  4. package/admin/js/views/collection-editor.js +5 -3
  5. package/admin/js/views/collections.js +1 -1
  6. package/admin/js/views/page-editor.js +27 -27
  7. package/config/plugins.json +16 -0
  8. package/config/site.json +1 -1
  9. package/package.json +2 -2
  10. package/plugins/analytics/stats.json +1 -1
  11. package/plugins/contacts/admin/templates/contacts.html +126 -0
  12. package/plugins/contacts/admin/views/contacts.js +710 -0
  13. package/plugins/contacts/config.js +6 -0
  14. package/plugins/contacts/data/contacts.json +20 -0
  15. package/plugins/contacts/plugin.js +351 -0
  16. package/plugins/contacts/plugin.json +23 -0
  17. package/plugins/docs/admin/templates/docs.html +69 -0
  18. package/plugins/docs/admin/views/docs.js +276 -0
  19. package/plugins/docs/config.js +8 -0
  20. package/plugins/docs/data/documents/452f49b7-9c93-4a67-874d-27f882891ad2.json +11 -0
  21. package/plugins/docs/data/documents/57e003f0-68f2-47dc-9c36-ed4b10ed3deb.json +11 -0
  22. package/plugins/docs/data/folders.json +9 -0
  23. package/plugins/docs/data/templates.json +1 -0
  24. package/plugins/docs/plugin.js +375 -0
  25. package/plugins/docs/plugin.json +23 -0
  26. package/plugins/notes/admin/templates/notes.html +92 -0
  27. package/plugins/notes/admin/views/notes.js +304 -0
  28. package/plugins/notes/config.js +6 -0
  29. package/plugins/notes/data/notes.json +1 -0
  30. package/plugins/notes/plugin.js +177 -0
  31. package/plugins/notes/plugin.json +23 -0
  32. package/plugins/todo/admin/templates/todo.html +164 -0
  33. package/plugins/todo/admin/views/todo.js +328 -0
  34. package/plugins/todo/config.js +7 -0
  35. package/plugins/todo/data/todos.json +1 -0
  36. package/plugins/todo/plugin.js +155 -0
  37. package/plugins/todo/plugin.json +23 -0
  38. package/server/routes/api/auth.js +2 -0
  39. package/server/routes/api/collections.js +55 -0
  40. package/server/routes/api/forms.js +3 -0
  41. package/server/routes/api/settings.js +16 -1
  42. package/server/routes/public.js +2 -0
  43. package/server/services/markdown.js +169 -8
  44. package/server/services/plugins.js +3 -2
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "/": 156,
3
- "/about": 74,
3
+ "/about": 76,
4
4
  "/blog": 36,
5
5
  "/contact": 30,
6
6
  "/resources/typography": 4,
@@ -0,0 +1,126 @@
1
+ <div class="contacts-plugin">
2
+
3
+ <!-- Toolbar -->
4
+ <div class="toolbar mb-3" style="display:flex;align-items:center;gap:0.5rem;flex-wrap:wrap;">
5
+ <input id="contacts-search" type="text" class="form-input" placeholder="Search contacts…" style="width:220px;">
6
+ <select id="group-filter" class="form-input" style="width:160px;">
7
+ <option value="">All groups</option>
8
+ </select>
9
+ <button id="fav-toggle" class="btn btn-outline" title="Show favourites only">
10
+ <span data-icon="star"></span>
11
+ Favourites
12
+ </button>
13
+ <span style="flex:1;"></span>
14
+ <button id="export-btn" class="btn btn-outline">
15
+ <span data-icon="download"></span>
16
+ Export
17
+ </button>
18
+ <button id="import-btn" class="btn btn-outline">
19
+ <span data-icon="upload"></span>
20
+ Import
21
+ </button>
22
+ <input id="import-file" type="file" accept=".json" style="display:none;">
23
+ <button id="add-contact-btn" class="btn btn-primary">
24
+ <span data-icon="plus"></span>
25
+ Add Contact
26
+ </button>
27
+ </div>
28
+
29
+ <!-- Stats bar -->
30
+ <div id="contacts-stats" class="mb-3" style="display:flex;gap:1.5rem;font-size:0.875rem;color:var(--dm-text-muted);">
31
+ <span>Total: <strong id="stat-total">0</strong></span>
32
+ <span>Groups: <strong id="stat-groups">0</strong></span>
33
+ <span>Favourites: <strong id="stat-favs">0</strong></span>
34
+ <span id="bulk-actions" style="display:none;margin-left:auto;">
35
+ <button id="bulk-delete-btn" class="btn btn-sm btn-danger">
36
+ <span data-icon="trash"></span>
37
+ Delete selected (<span id="selected-count">0</span>)
38
+ </button>
39
+ </span>
40
+ </div>
41
+
42
+ <!-- Groups panel -->
43
+ <div id="groups-panel" class="card mb-3">
44
+ <div class="card-header" style="display:flex;align-items:center;justify-content:space-between;cursor:pointer;" id="groups-panel-toggle">
45
+ <span><span data-icon="folder"></span> <strong>Manage Groups</strong></span>
46
+ <span data-icon="chevron-down" id="groups-chevron"></span>
47
+ </div>
48
+ <div id="groups-panel-body" class="card-body" style="display:none;">
49
+ <div style="display:flex;gap:0.5rem;margin-bottom:1rem;">
50
+ <input id="new-group-input" type="text" class="form-input" placeholder="New group name…"
51
+ style="flex:1;">
52
+ <button id="add-group-btn" class="btn btn-primary">
53
+ <span data-icon="plus"></span>
54
+ Add Group
55
+ </button>
56
+ </div>
57
+ <div id="groups-list">
58
+ <p class="text-muted">No groups yet. Add one above.</p>
59
+ </div>
60
+ </div>
61
+ </div>
62
+
63
+ <!-- Contact editor overlay -->
64
+ <div id="contact-editor" class="card mb-3" style="display:none;">
65
+ <div class="card-header" style="display:flex;align-items:center;justify-content:space-between;">
66
+ <strong id="editor-title">Add Contact</strong>
67
+ <button id="editor-cancel-btn" class="btn btn-sm btn-outline">Cancel</button>
68
+ </div>
69
+ <div class="card-body">
70
+ <div class="grid grid-cols-2" style="gap:1rem;">
71
+ <div class="form-group">
72
+ <label for="contact-name" class="form-label">Name <span style="color:var(--dm-danger)">*</span></label>
73
+ <input id="contact-name" type="text" class="form-input" placeholder="Full name">
74
+ </div>
75
+ <div class="form-group">
76
+ <label for="contact-email" class="form-label">Email</label>
77
+ <input id="contact-email" type="email" class="form-input" placeholder="email@example.com">
78
+ </div>
79
+ <div class="form-group">
80
+ <label for="contact-phone" class="form-label">Phone</label>
81
+ <input id="contact-phone" type="text" class="form-input" placeholder="+44 …">
82
+ </div>
83
+ <div class="form-group">
84
+ <label class="form-label">Groups</label>
85
+ <div id="contact-groups-display" style="min-height:38px;padding:0.375rem 0.75rem;border:1px solid var(--dm-border);border-radius:var(--dm-radius);cursor:pointer;display:flex;flex-wrap:wrap;gap:0.25rem;align-items:center;">
86
+ <span class="text-muted" id="groups-placeholder">Select groups…</span>
87
+ </div>
88
+ <div id="groups-dropdown-list" class="card mt-1" style="display:none;max-height:180px;overflow-y:auto;position:absolute;z-index:100;min-width:200px;">
89
+ <div class="card-body" id="groups-dropdown-items" style="padding:0.25rem;"></div>
90
+ </div>
91
+ </div>
92
+ <div class="form-group" style="grid-column:1/-1;">
93
+ <label for="contact-notes" class="form-label">Notes</label>
94
+ <textarea id="contact-notes" class="form-input" rows="3" placeholder="Optional notes…"></textarea>
95
+ </div>
96
+ <div class="form-group">
97
+ <label class="form-label" style="display:flex;align-items:center;gap:0.5rem;cursor:pointer;">
98
+ <input id="contact-favourite" type="checkbox" class="form-check-input">
99
+ Mark as favourite
100
+ </label>
101
+ </div>
102
+ </div>
103
+ <div style="display:flex;gap:0.5rem;margin-top:1rem;">
104
+ <button id="editor-save-btn" class="btn btn-primary">
105
+ <span data-icon="save"></span>
106
+ <span id="editor-save-label">Save Contact</span>
107
+ </button>
108
+ <button id="editor-delete-btn" class="btn btn-danger" style="display:none;">
109
+ <span data-icon="trash"></span>
110
+ Delete
111
+ </button>
112
+ <button id="editor-cancel-btn2" class="btn btn-outline">Cancel</button>
113
+ </div>
114
+ </div>
115
+ </div>
116
+
117
+ <!-- Contacts table -->
118
+ <div id="contacts-table"></div>
119
+
120
+ <!-- Empty state -->
121
+ <div id="contacts-empty" style="display:none;text-align:center;padding:3rem 1rem;color:var(--dm-text-muted);">
122
+ <span data-icon="users" style="font-size:3rem;display:block;margin-bottom:1rem;"></span>
123
+ <p>No contacts yet. Click <strong>Add Contact</strong> to get started.</p>
124
+ </div>
125
+
126
+ </div>