@codefluss/sandbox 0.0.1-alpha.1

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 (233) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/README.md +413 -0
  3. package/dist/__tests__/auto-resize-script.test.d.ts +2 -0
  4. package/dist/__tests__/auto-resize-script.test.d.ts.map +1 -0
  5. package/dist/__tests__/auto-resize-script.test.js +49 -0
  6. package/dist/__tests__/auto-resize-script.test.js.map +1 -0
  7. package/dist/__tests__/sandbox-component.test.d.ts +2 -0
  8. package/dist/__tests__/sandbox-component.test.d.ts.map +1 -0
  9. package/dist/__tests__/sandbox-component.test.js +281 -0
  10. package/dist/__tests__/sandbox-component.test.js.map +1 -0
  11. package/dist/__tests__/sandbox-config.test.d.ts +2 -0
  12. package/dist/__tests__/sandbox-config.test.d.ts.map +1 -0
  13. package/dist/__tests__/sandbox-config.test.js +148 -0
  14. package/dist/__tests__/sandbox-config.test.js.map +1 -0
  15. package/dist/__tests__/sandbox-iframe.test.d.ts +2 -0
  16. package/dist/__tests__/sandbox-iframe.test.d.ts.map +1 -0
  17. package/dist/__tests__/sandbox-iframe.test.js +212 -0
  18. package/dist/__tests__/sandbox-iframe.test.js.map +1 -0
  19. package/dist/__tests__/setup.d.ts +2 -0
  20. package/dist/__tests__/setup.d.ts.map +1 -0
  21. package/dist/__tests__/setup.js +27 -0
  22. package/dist/__tests__/setup.js.map +1 -0
  23. package/dist/components/index.d.ts +5 -0
  24. package/dist/components/index.d.ts.map +1 -0
  25. package/dist/components/index.js +5 -0
  26. package/dist/components/index.js.map +1 -0
  27. package/dist/components/performance-wrapper.d.ts +12 -0
  28. package/dist/components/performance-wrapper.d.ts.map +1 -0
  29. package/dist/components/performance-wrapper.js +162 -0
  30. package/dist/components/performance-wrapper.js.map +1 -0
  31. package/dist/components/sandbox-component.d.ts +3 -0
  32. package/dist/components/sandbox-component.d.ts.map +1 -0
  33. package/dist/components/sandbox-component.js +123 -0
  34. package/dist/components/sandbox-component.js.map +1 -0
  35. package/dist/components/sandbox-iframe-cached.d.ts +3 -0
  36. package/dist/components/sandbox-iframe-cached.d.ts.map +1 -0
  37. package/dist/components/sandbox-iframe-cached.js +176 -0
  38. package/dist/components/sandbox-iframe-cached.js.map +1 -0
  39. package/dist/components/sandbox-iframe.d.ts +3 -0
  40. package/dist/components/sandbox-iframe.d.ts.map +1 -0
  41. package/dist/components/sandbox-iframe.js +131 -0
  42. package/dist/components/sandbox-iframe.js.map +1 -0
  43. package/dist/converters/auto-detect/auto-detect.d.ts +13 -0
  44. package/dist/converters/auto-detect/auto-detect.d.ts.map +1 -0
  45. package/dist/converters/auto-detect/auto-detect.js +224 -0
  46. package/dist/converters/auto-detect/auto-detect.js.map +1 -0
  47. package/dist/converters/auto-detect/index.d.ts +3 -0
  48. package/dist/converters/auto-detect/index.d.ts.map +1 -0
  49. package/dist/converters/auto-detect/index.js +2 -0
  50. package/dist/converters/auto-detect/index.js.map +1 -0
  51. package/dist/converters/codepen/codepen-converter.d.ts +9 -0
  52. package/dist/converters/codepen/codepen-converter.d.ts.map +1 -0
  53. package/dist/converters/codepen/codepen-converter.js +99 -0
  54. package/dist/converters/codepen/codepen-converter.js.map +1 -0
  55. package/dist/converters/codepen/index.d.ts +2 -0
  56. package/dist/converters/codepen/index.d.ts.map +1 -0
  57. package/dist/converters/codepen/index.js +2 -0
  58. package/dist/converters/codepen/index.js.map +1 -0
  59. package/dist/converters/gist/gist-converter.d.ts +31 -0
  60. package/dist/converters/gist/gist-converter.d.ts.map +1 -0
  61. package/dist/converters/gist/gist-converter.js +162 -0
  62. package/dist/converters/gist/gist-converter.js.map +1 -0
  63. package/dist/converters/gist/index.d.ts +2 -0
  64. package/dist/converters/gist/index.d.ts.map +1 -0
  65. package/dist/converters/gist/index.js +2 -0
  66. package/dist/converters/gist/index.js.map +1 -0
  67. package/dist/converters/shared/html-parser.d.ts +4 -0
  68. package/dist/converters/shared/html-parser.d.ts.map +1 -0
  69. package/dist/converters/shared/html-parser.js +39 -0
  70. package/dist/converters/shared/html-parser.js.map +1 -0
  71. package/dist/converters/shared/index.d.ts +4 -0
  72. package/dist/converters/shared/index.d.ts.map +1 -0
  73. package/dist/converters/shared/index.js +3 -0
  74. package/dist/converters/shared/index.js.map +1 -0
  75. package/dist/converters/shared/sanitization.d.ts +5 -0
  76. package/dist/converters/shared/sanitization.d.ts.map +1 -0
  77. package/dist/converters/shared/sanitization.js +176 -0
  78. package/dist/converters/shared/sanitization.js.map +1 -0
  79. package/dist/converters/shared/types.d.ts +23 -0
  80. package/dist/converters/shared/types.d.ts.map +1 -0
  81. package/dist/converters/shared/types.js +2 -0
  82. package/dist/converters/shared/types.js.map +1 -0
  83. package/dist/core/index.d.ts +13 -0
  84. package/dist/core/index.d.ts.map +1 -0
  85. package/dist/core/index.js +10 -0
  86. package/dist/core/index.js.map +1 -0
  87. package/dist/frameworks/__tests__/file-utils.test.d.ts +2 -0
  88. package/dist/frameworks/__tests__/file-utils.test.d.ts.map +1 -0
  89. package/dist/frameworks/__tests__/file-utils.test.js +408 -0
  90. package/dist/frameworks/__tests__/file-utils.test.js.map +1 -0
  91. package/dist/frameworks/__tests__/sandpack-wrapper.test.d.ts +2 -0
  92. package/dist/frameworks/__tests__/sandpack-wrapper.test.d.ts.map +1 -0
  93. package/dist/frameworks/__tests__/sandpack-wrapper.test.js +147 -0
  94. package/dist/frameworks/__tests__/sandpack-wrapper.test.js.map +1 -0
  95. package/dist/frameworks/file-utils.d.ts +20 -0
  96. package/dist/frameworks/file-utils.d.ts.map +1 -0
  97. package/dist/frameworks/file-utils.js +293 -0
  98. package/dist/frameworks/file-utils.js.map +1 -0
  99. package/dist/frameworks/framework-detector.d.ts +5 -0
  100. package/dist/frameworks/framework-detector.d.ts.map +1 -0
  101. package/dist/frameworks/framework-detector.js +117 -0
  102. package/dist/frameworks/framework-detector.js.map +1 -0
  103. package/dist/frameworks/index.d.ts +6 -0
  104. package/dist/frameworks/index.d.ts.map +1 -0
  105. package/dist/frameworks/index.js +5 -0
  106. package/dist/frameworks/index.js.map +1 -0
  107. package/dist/frameworks/sandpack-wrapper.d.ts +28 -0
  108. package/dist/frameworks/sandpack-wrapper.d.ts.map +1 -0
  109. package/dist/frameworks/sandpack-wrapper.js +55 -0
  110. package/dist/frameworks/sandpack-wrapper.js.map +1 -0
  111. package/dist/frameworks/templates/index.d.ts +8 -0
  112. package/dist/frameworks/templates/index.d.ts.map +1 -0
  113. package/dist/frameworks/templates/index.js +29 -0
  114. package/dist/frameworks/templates/index.js.map +1 -0
  115. package/dist/frameworks/templates/react-template.d.ts +3 -0
  116. package/dist/frameworks/templates/react-template.d.ts.map +1 -0
  117. package/dist/frameworks/templates/react-template.js +376 -0
  118. package/dist/frameworks/templates/react-template.js.map +1 -0
  119. package/dist/frameworks/templates/svelte-template.d.ts +3 -0
  120. package/dist/frameworks/templates/svelte-template.d.ts.map +1 -0
  121. package/dist/frameworks/templates/svelte-template.js +373 -0
  122. package/dist/frameworks/templates/svelte-template.js.map +1 -0
  123. package/dist/frameworks/templates/vanilla-template.d.ts +3 -0
  124. package/dist/frameworks/templates/vanilla-template.d.ts.map +1 -0
  125. package/dist/frameworks/templates/vanilla-template.js +455 -0
  126. package/dist/frameworks/templates/vanilla-template.js.map +1 -0
  127. package/dist/frameworks/templates/vue-template.d.ts +3 -0
  128. package/dist/frameworks/templates/vue-template.d.ts.map +1 -0
  129. package/dist/frameworks/templates/vue-template.js +388 -0
  130. package/dist/frameworks/templates/vue-template.js.map +1 -0
  131. package/dist/frameworks/types.d.ts +57 -0
  132. package/dist/frameworks/types.d.ts.map +1 -0
  133. package/dist/frameworks/types.js +2 -0
  134. package/dist/frameworks/types.js.map +1 -0
  135. package/dist/index.d.ts +7 -0
  136. package/dist/index.d.ts.map +1 -0
  137. package/dist/index.js +7 -0
  138. package/dist/index.js.map +1 -0
  139. package/dist/lib/performance-tracker.d.ts +45 -0
  140. package/dist/lib/performance-tracker.d.ts.map +1 -0
  141. package/dist/lib/performance-tracker.js +165 -0
  142. package/dist/lib/performance-tracker.js.map +1 -0
  143. package/dist/lib/sandbox-cache.d.ts +24 -0
  144. package/dist/lib/sandbox-cache.d.ts.map +1 -0
  145. package/dist/lib/sandbox-cache.js +138 -0
  146. package/dist/lib/sandbox-cache.js.map +1 -0
  147. package/dist/locales/de.json +72 -0
  148. package/dist/locales/en.json +72 -0
  149. package/dist/locales/index.d.ts +148 -0
  150. package/dist/locales/index.d.ts.map +1 -0
  151. package/dist/locales/index.js +7 -0
  152. package/dist/locales/index.js.map +1 -0
  153. package/dist/performance/sandpack-bundle-cache.d.ts +19 -0
  154. package/dist/performance/sandpack-bundle-cache.d.ts.map +1 -0
  155. package/dist/performance/sandpack-bundle-cache.js +48 -0
  156. package/dist/performance/sandpack-bundle-cache.js.map +1 -0
  157. package/dist/sandbox-config.d.ts +4 -0
  158. package/dist/sandbox-config.d.ts.map +1 -0
  159. package/dist/sandbox-config.js +235 -0
  160. package/dist/sandbox-config.js.map +1 -0
  161. package/dist/storage/__tests__/indexeddb-adapter.test.d.ts +2 -0
  162. package/dist/storage/__tests__/indexeddb-adapter.test.d.ts.map +1 -0
  163. package/dist/storage/__tests__/indexeddb-adapter.test.js +192 -0
  164. package/dist/storage/__tests__/indexeddb-adapter.test.js.map +1 -0
  165. package/dist/storage/__tests__/project-manager.test.d.ts +2 -0
  166. package/dist/storage/__tests__/project-manager.test.d.ts.map +1 -0
  167. package/dist/storage/__tests__/project-manager.test.js +266 -0
  168. package/dist/storage/__tests__/project-manager.test.js.map +1 -0
  169. package/dist/storage/index.d.ts +5 -0
  170. package/dist/storage/index.d.ts.map +1 -0
  171. package/dist/storage/index.js +4 -0
  172. package/dist/storage/index.js.map +1 -0
  173. package/dist/storage/indexeddb-adapter.d.ts +18 -0
  174. package/dist/storage/indexeddb-adapter.d.ts.map +1 -0
  175. package/dist/storage/indexeddb-adapter.js +232 -0
  176. package/dist/storage/indexeddb-adapter.js.map +1 -0
  177. package/dist/storage/project-manager.d.ts +35 -0
  178. package/dist/storage/project-manager.d.ts.map +1 -0
  179. package/dist/storage/project-manager.js +213 -0
  180. package/dist/storage/project-manager.js.map +1 -0
  181. package/dist/storage/types.d.ts +59 -0
  182. package/dist/storage/types.d.ts.map +1 -0
  183. package/dist/storage/types.js +2 -0
  184. package/dist/storage/types.js.map +1 -0
  185. package/dist/storage/zip-handler.d.ts +5 -0
  186. package/dist/storage/zip-handler.d.ts.map +1 -0
  187. package/dist/storage/zip-handler.js +200 -0
  188. package/dist/storage/zip-handler.js.map +1 -0
  189. package/dist/types/sandbox-types.d.ts +54 -0
  190. package/dist/types/sandbox-types.d.ts.map +1 -0
  191. package/dist/types/sandbox-types.js +2 -0
  192. package/dist/types/sandbox-types.js.map +1 -0
  193. package/dist/utils/__tests__/converters/auto-detect.test.d.ts +2 -0
  194. package/dist/utils/__tests__/converters/auto-detect.test.d.ts.map +1 -0
  195. package/dist/utils/__tests__/converters/auto-detect.test.js +381 -0
  196. package/dist/utils/__tests__/converters/auto-detect.test.js.map +1 -0
  197. package/dist/utils/__tests__/converters/codepen-converter.test.d.ts +2 -0
  198. package/dist/utils/__tests__/converters/codepen-converter.test.d.ts.map +1 -0
  199. package/dist/utils/__tests__/converters/codepen-converter.test.js +408 -0
  200. package/dist/utils/__tests__/converters/codepen-converter.test.js.map +1 -0
  201. package/dist/utils/__tests__/converters/gist-converter.test.d.ts +2 -0
  202. package/dist/utils/__tests__/converters/gist-converter.test.d.ts.map +1 -0
  203. package/dist/utils/__tests__/converters/gist-converter.test.js +458 -0
  204. package/dist/utils/__tests__/converters/gist-converter.test.js.map +1 -0
  205. package/dist/utils/__tests__/converters/html-parser.test.d.ts +2 -0
  206. package/dist/utils/__tests__/converters/html-parser.test.d.ts.map +1 -0
  207. package/dist/utils/__tests__/converters/html-parser.test.js +285 -0
  208. package/dist/utils/__tests__/converters/html-parser.test.js.map +1 -0
  209. package/dist/utils/__tests__/converters/sanitization.test.d.ts +2 -0
  210. package/dist/utils/__tests__/converters/sanitization.test.d.ts.map +1 -0
  211. package/dist/utils/__tests__/converters/sanitization.test.js +210 -0
  212. package/dist/utils/__tests__/converters/sanitization.test.js.map +1 -0
  213. package/dist/utils/auto-resize-script.d.ts +4 -0
  214. package/dist/utils/auto-resize-script.d.ts.map +1 -0
  215. package/dist/utils/auto-resize-script.js +125 -0
  216. package/dist/utils/auto-resize-script.js.map +1 -0
  217. package/dist/widgets/banner/BannerWidget.d.ts +15 -0
  218. package/dist/widgets/banner/BannerWidget.d.ts.map +1 -0
  219. package/dist/widgets/banner/BannerWidget.js +33 -0
  220. package/dist/widgets/banner/BannerWidget.js.map +1 -0
  221. package/dist/widgets/form/FormWidget.d.ts +23 -0
  222. package/dist/widgets/form/FormWidget.d.ts.map +1 -0
  223. package/dist/widgets/form/FormWidget.js +42 -0
  224. package/dist/widgets/form/FormWidget.js.map +1 -0
  225. package/dist/widgets/index.d.ts +8 -0
  226. package/dist/widgets/index.d.ts.map +1 -0
  227. package/dist/widgets/index.js +28 -0
  228. package/dist/widgets/index.js.map +1 -0
  229. package/dist/widgets/types.d.ts +28 -0
  230. package/dist/widgets/types.d.ts.map +1 -0
  231. package/dist/widgets/types.js +2 -0
  232. package/dist/widgets/types.js.map +1 -0
  233. package/package.json +116 -0
@@ -0,0 +1,373 @@
1
+ export const svelteTemplate = {
2
+ id: 'svelte',
3
+ name: 'Svelte',
4
+ description: 'Svelte with reactive statements',
5
+ sandpackTemplate: 'svelte',
6
+ files: {
7
+ '/App.svelte': {
8
+ code: `<script lang="ts">
9
+ import { onMount } from 'svelte';
10
+
11
+ let count = 0;
12
+ let totalClicks = 0;
13
+ const storageKey = 'svelte-counter-data';
14
+
15
+ // Load from localStorage on mount
16
+ onMount(() => {
17
+ try {
18
+ const data = localStorage.getItem(storageKey);
19
+ if (data) {
20
+ const parsed = JSON.parse(data);
21
+ count = parsed.count || 0;
22
+ totalClicks = parsed.totalClicks || 0;
23
+ }
24
+ } catch (error) {
25
+ console.warn('Failed to load from localStorage:', error);
26
+ }
27
+ });
28
+
29
+ const increment = () => {
30
+ count += 1;
31
+ totalClicks += 1;
32
+ saveToStorage();
33
+ };
34
+
35
+ const decrement = () => {
36
+ if (count > 0) {
37
+ count -= 1;
38
+ totalClicks += 1;
39
+ saveToStorage();
40
+ }
41
+ };
42
+
43
+ const reset = () => {
44
+ count = 0;
45
+ totalClicks += 1;
46
+ saveToStorage();
47
+ };
48
+
49
+ const saveToStorage = () => {
50
+ try {
51
+ const data = { count, totalClicks };
52
+ localStorage.setItem(storageKey, JSON.stringify(data));
53
+ } catch (error) {
54
+ console.warn('Failed to save to localStorage:', error);
55
+ }
56
+ };
57
+
58
+ // Reactive statement to save whenever count changes
59
+ $: if (count >= 0) saveToStorage();
60
+ </script>
61
+
62
+ <div class="app">
63
+ <header>
64
+ <h1>Hello Svelte! 🧡</h1>
65
+ <p>Edit this component to see live updates.</p>
66
+ </header>
67
+
68
+ <main>
69
+ <section class="card">
70
+ <h2>Counter: <span id="count">{count}</span></h2>
71
+ <div class="button-group">
72
+ <button class="btn-primary" on:click={increment}>
73
+ <span>+</span> Increment
74
+ </button>
75
+ <button class="btn-secondary" on:click={decrement}>
76
+ <span>-</span> Decrement
77
+ </button>
78
+ <button class="btn-outline" on:click={reset}>
79
+ Reset
80
+ </button>
81
+ </div>
82
+ <div class="stats">
83
+ <small>Total clicks: {totalClicks}</small>
84
+ </div>
85
+ </section>
86
+
87
+ <section class="card">
88
+ <h3>Modern Svelte Features</h3>
89
+ <ul>
90
+ <li>✅ Reactive Statements</li>
91
+ <li>✅ TypeScript Support</li>
92
+ <li>✅ LocalStorage Persistence</li>
93
+ <li>✅ Event Handling</li>
94
+ <li>✅ Vite Build System</li>
95
+ </ul>
96
+ </section>
97
+ </main>
98
+ </div>
99
+
100
+ <style>
101
+ /* Modern Svelte App Styles - Same as Vanilla Template */
102
+
103
+ * {
104
+ box-sizing: border-box;
105
+ margin: 0;
106
+ padding: 0;
107
+ }
108
+
109
+ body {
110
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
111
+ line-height: 1.6;
112
+ color: #333;
113
+ background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
114
+ min-height: 100vh;
115
+ padding: 2rem;
116
+ }
117
+
118
+ .app {
119
+ max-width: 800px;
120
+ margin: 0 auto;
121
+ background: white;
122
+ border-radius: 12px;
123
+ box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1);
124
+ padding: 2rem;
125
+ }
126
+
127
+ header {
128
+ text-align: center;
129
+ margin-bottom: 3rem;
130
+ }
131
+
132
+ h1 {
133
+ font-size: clamp(2rem, 5vw, 3rem);
134
+ font-weight: 800;
135
+ margin-bottom: 0.5rem;
136
+ background: linear-gradient(135deg, #ff3e00, #6366f1);
137
+ -webkit-background-clip: text;
138
+ background-clip: text;
139
+ -webkit-text-fill-color: transparent;
140
+ animation: titleGlow 3s ease-in-out infinite alternate;
141
+ }
142
+
143
+ @keyframes titleGlow {
144
+ from { filter: drop-shadow(0 0 20px rgba(255, 62, 0, 0.3)); }
145
+ to { filter: drop-shadow(0 0 30px rgba(255, 62, 0, 0.3)); }
146
+ }
147
+
148
+ p {
149
+ color: #64748b;
150
+ font-size: 1.1rem;
151
+ margin-bottom: 2rem;
152
+ }
153
+
154
+ .card {
155
+ background: white;
156
+ border: 1px solid #e2e8f0;
157
+ border-radius: 12px;
158
+ padding: 2rem;
159
+ margin-bottom: 2rem;
160
+ box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
161
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
162
+ }
163
+
164
+ .card:hover {
165
+ box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1);
166
+ transform: translateY(-2px);
167
+ }
168
+
169
+ .card h2 {
170
+ font-size: 2rem;
171
+ font-weight: 700;
172
+ margin-bottom: 1.5rem;
173
+ text-align: center;
174
+ color: #1e293b;
175
+ }
176
+
177
+ .card h3 {
178
+ font-size: 1.5rem;
179
+ font-weight: 600;
180
+ margin-bottom: 1rem;
181
+ color: #1e293b;
182
+ }
183
+
184
+ #count {
185
+ display: inline-block;
186
+ font-weight: 800;
187
+ font-size: 2.5rem;
188
+ color: #ff3e00;
189
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
190
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
191
+ min-width: 100px;
192
+ }
193
+
194
+ .button-group {
195
+ display: flex;
196
+ gap: 1rem;
197
+ justify-content: center;
198
+ margin: 2rem 0;
199
+ flex-wrap: wrap;
200
+ }
201
+
202
+ button {
203
+ display: inline-flex;
204
+ align-items: center;
205
+ gap: 0.5rem;
206
+ padding: 0.875rem 1.5rem;
207
+ font-size: 1rem;
208
+ font-weight: 600;
209
+ border: 2px solid transparent;
210
+ border-radius: 8px;
211
+ cursor: pointer;
212
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
213
+ position: relative;
214
+ overflow: hidden;
215
+ white-space: nowrap;
216
+ }
217
+
218
+ button::before {
219
+ content: '';
220
+ position: absolute;
221
+ top: 0;
222
+ left: -100%;
223
+ width: 100%;
224
+ height: 100%;
225
+ background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
226
+ transition: left 0.5s;
227
+ }
228
+
229
+ button:hover::before {
230
+ left: 100%;
231
+ }
232
+
233
+ button:active {
234
+ transform: scale(0.95);
235
+ }
236
+
237
+ button span {
238
+ font-size: 1.2rem;
239
+ font-weight: 700;
240
+ }
241
+
242
+ .btn-primary {
243
+ background: #ff3e00;
244
+ color: white;
245
+ border-color: #ff3e00;
246
+ }
247
+
248
+ .btn-primary:hover {
249
+ background: #e63600;
250
+ border-color: #e63600;
251
+ box-shadow: 0 4px 12px rgba(255, 62, 0, 0.3);
252
+ }
253
+
254
+ .btn-secondary {
255
+ background: #6366f1;
256
+ color: white;
257
+ border-color: #6366f1;
258
+ }
259
+
260
+ .btn-secondary:hover {
261
+ background: #4f46e5;
262
+ box-shadow: 0 4px 12px rgba(99, 102, 241, 0.3);
263
+ }
264
+
265
+ .btn-outline {
266
+ background: transparent;
267
+ color: #64748b;
268
+ border-color: #e2e8f0;
269
+ }
270
+
271
+ .btn-outline:hover {
272
+ background: #f8fafc;
273
+ color: #ef4444;
274
+ border-color: #ef4444;
275
+ }
276
+
277
+ .stats {
278
+ text-align: center;
279
+ margin-top: 1.5rem;
280
+ padding-top: 1.5rem;
281
+ border-top: 1px solid #e2e8f0;
282
+ }
283
+
284
+ .stats small {
285
+ color: #64748b;
286
+ font-size: 0.875rem;
287
+ text-transform: uppercase;
288
+ letter-spacing: 0.05em;
289
+ }
290
+
291
+ ul {
292
+ list-style: none;
293
+ padding: 0;
294
+ }
295
+
296
+ li {
297
+ padding: 0.5rem 0;
298
+ color: #64748b;
299
+ border-bottom: 1px solid #e2e8f0;
300
+ }
301
+
302
+ li:last-child {
303
+ border-bottom: none;
304
+ }
305
+
306
+ /* Focus styles */
307
+ button:focus-visible {
308
+ outline: 2px solid #ff3e00;
309
+ outline-offset: 2px;
310
+ }
311
+
312
+ /* Responsive design */
313
+ @media (max-width: 768px) {
314
+ body {
315
+ padding: 1rem;
316
+ }
317
+
318
+ .app {
319
+ padding: 1.5rem;
320
+ }
321
+
322
+ .button-group {
323
+ flex-direction: column;
324
+ align-items: center;
325
+ }
326
+
327
+ button {
328
+ width: 100%;
329
+ max-width: 200px;
330
+ }
331
+ }
332
+ </style>`,
333
+ },
334
+ '/main.ts': {
335
+ code: `import App from './App.svelte';
336
+
337
+ const app = new App({
338
+ target: document.getElementById('app')!,
339
+ });
340
+
341
+ export default app;`,
342
+ },
343
+ '/index.html': {
344
+ code: `<!DOCTYPE html>
345
+ <html lang="en">
346
+ <head>
347
+ <meta charset="UTF-8" />
348
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
349
+ <title>Svelte App</title>
350
+ </head>
351
+ <body>
352
+ <div id="app"></div>
353
+ <script type="module" src="/main.ts"></script>
354
+ </body>
355
+ </html>`,
356
+ },
357
+ },
358
+ dependencies: {
359
+ svelte: '^3.58.0',
360
+ },
361
+ devDependencies: {
362
+ '@sveltejs/vite-plugin-svelte': '^2.4.0',
363
+ 'svelte-check': '^3.5.0',
364
+ typescript: '^5.0.0',
365
+ },
366
+ config: {
367
+ entry: '/main.ts',
368
+ main: '/App.svelte',
369
+ showConsole: true,
370
+ showDevTools: false,
371
+ },
372
+ };
373
+ //# sourceMappingURL=svelte-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelte-template.js","sourceRoot":"","sources":["../../../src/frameworks/templates/svelte-template.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,cAAc,GAAsB;IAChD,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,iCAAiC;IAC9C,gBAAgB,EAAE,QAAQ;IAC1B,KAAK,EAAE;QACN,aAAa,EAAE;YACd,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAoUA;SACN;QACC,UAAU,EAAE;YACb,IAAI,EAAE;;;;;;oBAMW;SACjB;QACC,aAAa,EAAE;YAChB,IAAI,EAAE;;;;;;;;;;;QAWD;SACL;KACD;IACD,YAAY,EAAE;QACb,MAAM,EAAE,SAAS;KACjB;IACD,eAAe,EAAE;QAChB,8BAA8B,EAAE,QAAQ;QACxC,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;KACpB;IACD,MAAM,EAAE;QACP,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,KAAK;KACnB;CACD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { FrameworkTemplate } from '../types';
2
+ export declare const vanillaTemplate: FrameworkTemplate;
3
+ //# sourceMappingURL=vanilla-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vanilla-template.d.ts","sourceRoot":"","sources":["../../../src/frameworks/templates/vanilla-template.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,eAAO,MAAM,eAAe,EAAE,iBAqc7B,CAAC"}