@edtools/cli 0.6.1 → 0.7.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 (39) hide show
  1. package/dist/adapters/html/index.d.ts +2 -2
  2. package/dist/adapters/html/index.d.ts.map +1 -1
  3. package/dist/adapters/html/index.js +19 -2
  4. package/dist/adapters/html/index.js.map +1 -1
  5. package/dist/adapters/html/templates/base-layout.ejs +173 -0
  6. package/dist/adapters/html/templates/blog-index.html.ejs +170 -101
  7. package/dist/adapters/html/templates/blog-post-enhanced.ejs +655 -0
  8. package/dist/adapters/html/templates/blog-post-new.ejs +612 -0
  9. package/dist/adapters/html/templates/components/footer.ejs +330 -0
  10. package/dist/adapters/html/templates/components/header.ejs +208 -0
  11. package/dist/adapters/html/templates/components/social-share.ejs +202 -0
  12. package/dist/chunk-5N3D47CJ.js +823 -0
  13. package/dist/chunk-TROAGFSZ.js +824 -0
  14. package/dist/chunk-U77FH5BI.js +823 -0
  15. package/dist/cli/commands/config.d.ts +17 -0
  16. package/dist/cli/commands/config.d.ts.map +1 -0
  17. package/dist/cli/commands/config.js +140 -0
  18. package/dist/cli/commands/config.js.map +1 -0
  19. package/dist/cli/commands/generate.d.ts +1 -1
  20. package/dist/cli/commands/generate.d.ts.map +1 -1
  21. package/dist/cli/commands/generate.js +74 -17
  22. package/dist/cli/commands/generate.js.map +1 -1
  23. package/dist/cli/commands/init.d.ts.map +1 -1
  24. package/dist/cli/commands/init.js +114 -0
  25. package/dist/cli/commands/init.js.map +1 -1
  26. package/dist/cli/index.js +567 -265
  27. package/dist/cli/index.js.map +1 -1
  28. package/dist/core/generator.d.ts +4 -1
  29. package/dist/core/generator.d.ts.map +1 -1
  30. package/dist/core/generator.js +114 -3
  31. package/dist/core/generator.js.map +1 -1
  32. package/dist/index.d.ts +87 -3
  33. package/dist/index.js +1 -1
  34. package/dist/types/adapter.d.ts +17 -2
  35. package/dist/types/adapter.d.ts.map +1 -1
  36. package/dist/types/adapter.js.map +1 -1
  37. package/dist/types/content.d.ts +66 -0
  38. package/dist/types/content.d.ts.map +1 -1
  39. package/package.json +2 -2
@@ -0,0 +1,202 @@
1
+ <!-- Social Share Buttons Component -->
2
+ <div class="social-share">
3
+ <div class="social-share-label">Share this article:</div>
4
+ <div class="social-share-buttons">
5
+ <!-- Twitter/X -->
6
+ <a href="https://twitter.com/intent/tweet?text=<%= encodeURIComponent(shareData.title) %>&url=<%= encodeURIComponent(shareData.url) %><% if (shareData.via) { %>&via=<%= shareData.via %><% } %>"
7
+ class="share-button share-twitter"
8
+ target="_blank"
9
+ rel="noopener noreferrer"
10
+ aria-label="Share on Twitter">
11
+ <svg width="18" height="18" fill="currentColor" viewBox="0 0 24 24">
12
+ <path d="M23 3a10.9 10.9 0 01-3.14 1.53 4.48 4.48 0 00-7.86 3v1A10.66 10.66 0 013 4s-4 9 5 13a11.64 11.64 0 01-7 2c9 5 20 0 20-11.5a4.5 4.5 0 00-.08-.83A7.72 7.72 0 0023 3z"></path>
13
+ </svg>
14
+ <span>Twitter</span>
15
+ </a>
16
+
17
+ <!-- LinkedIn -->
18
+ <a href="https://www.linkedin.com/shareArticle?mini=true&url=<%= encodeURIComponent(shareData.url) %>&title=<%= encodeURIComponent(shareData.title) %>&summary=<%= encodeURIComponent(shareData.description) %>"
19
+ class="share-button share-linkedin"
20
+ target="_blank"
21
+ rel="noopener noreferrer"
22
+ aria-label="Share on LinkedIn">
23
+ <svg width="18" height="18" fill="currentColor" viewBox="0 0 24 24">
24
+ <path d="M16 8a6 6 0 016 6v7h-4v-7a2 2 0 00-2-2 2 2 0 00-2 2v7h-4v-7a6 6 0 016-6zM2 9h4v12H2z"></path>
25
+ <circle cx="4" cy="4" r="2"></circle>
26
+ </svg>
27
+ <span>LinkedIn</span>
28
+ </a>
29
+
30
+ <!-- Facebook -->
31
+ <a href="https://www.facebook.com/sharer/sharer.php?u=<%= encodeURIComponent(shareData.url) %>"
32
+ class="share-button share-facebook"
33
+ target="_blank"
34
+ rel="noopener noreferrer"
35
+ aria-label="Share on Facebook">
36
+ <svg width="18" height="18" fill="currentColor" viewBox="0 0 24 24">
37
+ <path d="M18 2h-3a5 5 0 00-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 011-1h3z"></path>
38
+ </svg>
39
+ <span>Facebook</span>
40
+ </a>
41
+
42
+ <!-- Email -->
43
+ <a href="mailto:?subject=<%= encodeURIComponent(shareData.title) %>&body=<%= encodeURIComponent('Check out this article: ' + shareData.url) %>"
44
+ class="share-button share-email"
45
+ aria-label="Share via Email">
46
+ <svg width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
47
+ <path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path>
48
+ <polyline points="22,6 12,13 2,6"></polyline>
49
+ </svg>
50
+ <span>Email</span>
51
+ </a>
52
+
53
+ <!-- Copy Link -->
54
+ <button class="share-button share-copy"
55
+ onclick="copyToClipboard('<%= shareData.url %>')"
56
+ aria-label="Copy link">
57
+ <svg width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
58
+ <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path>
59
+ <path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path>
60
+ </svg>
61
+ <span id="copy-text">Copy</span>
62
+ </button>
63
+ </div>
64
+ </div>
65
+
66
+ <style>
67
+ .social-share {
68
+ margin: 2rem 0;
69
+ padding: 1.5rem;
70
+ background: var(--bg-light);
71
+ border-radius: 0.5rem;
72
+ border: 1px solid var(--border-color);
73
+ }
74
+
75
+ .social-share-label {
76
+ font-size: 0.875rem;
77
+ font-weight: 600;
78
+ color: var(--text-color);
79
+ margin-bottom: 1rem;
80
+ }
81
+
82
+ .social-share-buttons {
83
+ display: flex;
84
+ flex-wrap: wrap;
85
+ gap: 0.75rem;
86
+ }
87
+
88
+ .share-button {
89
+ display: inline-flex;
90
+ align-items: center;
91
+ gap: 0.5rem;
92
+ padding: 0.625rem 1rem;
93
+ border: 1px solid var(--border-color);
94
+ background: white;
95
+ color: var(--text-color);
96
+ text-decoration: none;
97
+ font-size: 0.875rem;
98
+ font-weight: 500;
99
+ border-radius: 0.375rem;
100
+ transition: all 0.2s;
101
+ cursor: pointer;
102
+ }
103
+
104
+ .share-button:hover {
105
+ transform: translateY(-1px);
106
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
107
+ text-decoration: none;
108
+ }
109
+
110
+ .share-twitter:hover {
111
+ background: #1DA1F2;
112
+ color: white;
113
+ border-color: #1DA1F2;
114
+ }
115
+
116
+ .share-linkedin:hover {
117
+ background: #0077B5;
118
+ color: white;
119
+ border-color: #0077B5;
120
+ }
121
+
122
+ .share-facebook:hover {
123
+ background: #1877F2;
124
+ color: white;
125
+ border-color: #1877F2;
126
+ }
127
+
128
+ .share-email:hover {
129
+ background: #EA4335;
130
+ color: white;
131
+ border-color: #EA4335;
132
+ }
133
+
134
+ .share-copy:hover {
135
+ background: var(--primary-color);
136
+ color: white;
137
+ border-color: var(--primary-color);
138
+ }
139
+
140
+ .share-button svg {
141
+ flex-shrink: 0;
142
+ }
143
+
144
+ /* Mobile responsive */
145
+ @media (max-width: 640px) {
146
+ .social-share-buttons {
147
+ flex-direction: column;
148
+ }
149
+
150
+ .share-button {
151
+ justify-content: center;
152
+ width: 100%;
153
+ }
154
+ }
155
+ </style>
156
+
157
+ <script>
158
+ function copyToClipboard(url) {
159
+ if (navigator.clipboard && navigator.clipboard.writeText) {
160
+ navigator.clipboard.writeText(url).then(function() {
161
+ // Show success feedback
162
+ const copyText = document.getElementById('copy-text');
163
+ const originalText = copyText.textContent;
164
+ copyText.textContent = 'Copied!';
165
+ setTimeout(function() {
166
+ copyText.textContent = originalText;
167
+ }, 2000);
168
+ }).catch(function(err) {
169
+ console.error('Failed to copy:', err);
170
+ fallbackCopy(url);
171
+ });
172
+ } else {
173
+ fallbackCopy(url);
174
+ }
175
+ }
176
+
177
+ function fallbackCopy(url) {
178
+ // Fallback for older browsers
179
+ const textArea = document.createElement('textarea');
180
+ textArea.value = url;
181
+ textArea.style.position = 'fixed';
182
+ textArea.style.left = '-999999px';
183
+ document.body.appendChild(textArea);
184
+ textArea.focus();
185
+ textArea.select();
186
+
187
+ try {
188
+ document.execCommand('copy');
189
+ const copyText = document.getElementById('copy-text');
190
+ const originalText = copyText.textContent;
191
+ copyText.textContent = 'Copied!';
192
+ setTimeout(function() {
193
+ copyText.textContent = originalText;
194
+ }, 2000);
195
+ } catch (err) {
196
+ console.error('Fallback copy failed:', err);
197
+ alert('Failed to copy link. Please copy manually: ' + url);
198
+ }
199
+
200
+ document.body.removeChild(textArea);
201
+ }
202
+ </script>