1
+ const SV_ADD = {
2
+ // Keeping the same order as in sv
3
+ // https://github.com/jycouet/cli/blob/main/packages/addons/_config/official.ts#L16-L17
4
+ packages : [
5
+ 'prettier' ,
6
+ 'eslint' ,
7
+ 'vitest' ,
8
+ 'playwright' ,
9
+ 'tailwindcss' ,
10
+ 'vite-plugin-devtools-json' ,
11
+ 'drizzle-orm' ,
12
+ 'lucia' ,
13
+ 'mdsvex' ,
14
+ '@inlang/paraglide-js' ,
15
+ 'storybook'
16
+ ]
17
+ } ;
18
+
19
+ const SV_ADD_CMD = {
20
+ prettier : 'npx sv add prettier' ,
21
+ eslint : 'npx sv add eslint' ,
22
+ vitest : 'npx sv add vitest' ,
23
+ playwright : 'npx sv add playwright' ,
24
+ tailwindcss : 'npx sv add tailwindcss' ,
25
+ 'vite-plugin-devtools-json' : 'npx sv add devtools-json' ,
26
+ 'drizzle-orm' : 'npx sv add drizzle' ,
27
+ lucia : 'npx sv add lucia' ,
28
+ mdsvex : 'npx sv add mdsvex' ,
29
+ '@inlang/paraglide-js' : 'npx sv add paraglide' ,
30
+ storybook : 'npx sv add storybook' ,
31
+
32
+ '@sveltejs/adapter-node' : 'npx sv add sveltekit-adapter=adapter:node' ,
33
+ '@sveltejs/adapter-vercel' : 'npx sv add sveltekit-adapter=adapter:vercel' ,
34
+ '@sveltejs/adapter-auto' : 'npx sv add sveltekit-adapter=adapter:auto' ,
35
+ '@sveltejs/adapter-cloudflare' : 'npx sv add sveltekit-adapter=adapter:cloudflare' ,
36
+ '@sveltejs/adapter-netlify' : 'npx sv add sveltekit-adapter=adapter:netlify'
37
+ } ;
38
+
39
+ const FEATURED : { title : string ; packages : string [ ] ; weights ?: Record < string , number > } [ ] = [
40
+ {
41
+ title : 'Component libraries' ,
42
+ packages : [
43
+ 'shadcn-svelte' ,
44
+ 'bits-ui' ,
45
+ '@melt-ui/svelte' ,
46
+ '@skeletonlabs/skeleton' ,
47
+ '@ark-ui/svelte' ,
48
+ 'flowbite-svelte' ,
49
+ 'svelte-material-ui' ,
50
+ 'carbon-components-svelte' ,
51
+ '@sveltestrap/sveltestrap' ,
52
+ 'daisyui'
53
+ ] ,
54
+ weights : {
55
+ 'shadcn-svelte' : 2
56
+ }
57
+ } ,
58
+ {
59
+ title : 'Individual components' ,
60
+ packages : [
61
+ '@tanstack/svelte-table' ,
62
+ '@ai-sdk/svelte' ,
63
+ 'svelte-moveable' ,
64
+ '@tanstack/svelte-virtual' ,
65
+ 'virtua' ,
66
+ '@event-calendar/core' ,
67
+ 'svelte-chartjs'
68
+ ]
69
+ } ,
70
+ {
71
+ title : 'SvelteKit adapters' ,
72
+ packages : [
73
+ '@sveltejs/adapter-node' ,
74
+ '@sveltejs/adapter-vercel' ,
75
+ '@sveltejs/adapter-auto' ,
76
+ '@sveltejs/adapter-cloudflare' ,
77
+ '@sveltejs/adapter-netlify' ,
78
+ 'svelte-kit-sst' ,
79
+ 'svelte-adapter-bun' ,
80
+ '@slicemachine/adapter-sveltekit' ,
81
+ 'amplify-adapter' ,
82
+ 'svelte-adapter-deno' ,
83
+ 'svelte-adapter-appengine' ,
84
+ 'sveltekit-adapter-browser-extension' ,
85
+ 'svelte-adapter-azure-swa'
86
+ ]
87
+ } ,
88
+ {
89
+ title : 'Icons' ,
90
+ packages : [
91
+ '@iconify/tailwind4' ,
92
+ '@unocss/preset-icons' ,
93
+ 'lucide-svelte' ,
94
+ 'svelte-awesome' ,
95
+ 'phosphor-svelte'
96
+ ]
97
+ } ,
98
+ {
99
+ title : 'Router' ,
100
+ packages : [
101
+ '@sveltejs/kit' ,
102
+ 'svelte-routing' ,
103
+ 'svelte-micro' ,
104
+ '@roxi/routify' ,
105
+ 'svelte-qparam' ,
106
+ '@easyroute/svelte' ,
107
+ 'svelte5-router' ,
108
+ 'svelte-guard' ,
109
+ 'svelte-guard-history-router' ,
110
+ 'svelte-pathfinder' ,
111
+ 'elegua'
112
+ ]
113
+ } ,
114
+ {
115
+ title : 'Data Visualization' ,
116
+ packages : [ 'layercake' , 'layerchart' , 'svelte-maplibre' , '@xyflow/svelte' , 'svelte-maplibre-gl' ]
117
+ } ,
118
+ {
119
+ title : '3D Rendering' ,
120
+ packages : [ '@threlte/core' , 'svelte-zdog' ]
121
+ } ,
122
+ {
123
+ title : 'Animations' ,
124
+ packages : [
125
+ '@neoconfetti/svelte' ,
126
+ 'svelte-motion' ,
127
+ '@lottiefiles/svelte-lottie-player' ,
128
+ '@tsparticles/svelte'
129
+ ]
130
+ } ,
131
+ {
132
+ title : 'Content' ,
133
+ packages : [
134
+ 'mdsvex' ,
135
+ 'svelte-markdown' ,
136
+ '@content-collections/core' ,
137
+ 'carta-md' ,
138
+ 'typewriter-editor' ,
139
+ '@svelte-put/toc' ,
140
+ '@prismicio/svelte' ,
141
+ '@svelteness/kit-docs' ,
142
+ '@evidence-dev/evidence' ,
143
+ '@magidoc/plugin-svelte-marked' ,
144
+ 'svelte-exmarkdown' ,
145
+ 'svelte-pdf'
146
+ ]
147
+ } ,
148
+ {
149
+ title : 'Bundler plugins' ,
150
+ packages : [
151
+ '@sveltejs/vite-plugin-svelte' ,
152
+ 'rollup-plugin-svelte' ,
153
+ 'svelte-loader' ,
154
+ 'esbuild-svelte'
155
+ ]
156
+ } ,
157
+ {
158
+ title : 'Media' ,
159
+ packages : [
160
+ '@sveltejs/enhanced-img' ,
161
+ '@vime/svelte' ,
162
+ '@uppy/svelte' ,
163
+ '@unpic/svelte' ,
164
+ 'unlazy-svelte' ,
165
+ 'scrolly-video' ,
166
+ '@zerodevx/svelte-img' ,
167
+ 'svelte-easy-crop'
168
+ ]
169
+ } ,
170
+ {
171
+ title : 'Data fetching' ,
172
+ packages : [
173
+ '@urql/svelte' ,
174
+ 'trpc-sveltekit' ,
175
+ 'sswr' ,
176
+ '@tanstack/svelte-query' ,
177
+ '@orpc/svelte-query' ,
178
+ 'houdini'
179
+ ]
180
+ } ,
181
+ {
182
+ title : 'SEO' ,
183
+ packages : [ 'svelte-meta-tags' , '@sveltejs/amp' , 'svelte-seo' , 'super-sitemap' , 'svead' ]
184
+ } ,
185
+ {
186
+ title : 'Auth' ,
187
+ packages : [
188
+ 'lucia' ,
189
+ '@auth/sveltekit' ,
190
+ 'altcha' ,
191
+ 'svelte-session-manager' ,
192
+ 'clerk-sveltekit' ,
193
+ 'svelte-kit-sessions' ,
194
+ '@supabase/auth-helpers-sveltekit' ,
195
+ '@passlock/sveltekit'
196
+ ]
197
+ } ,
198
+ {
199
+ title : 'Third party services' ,
200
+ packages : [
201
+ '@sentry/svelte' ,
202
+ '@sentry/sveltekit' ,
203
+ 'svelte-stripe' ,
204
+ 'clerk-sveltekit' ,
205
+ '@storyblok/svelte' ,
206
+ '@inlang/paraglide-js'
207
+ ]
208
+ } ,
209
+ // {
210
+ // title: 'Testing',
211
+ // packages: [
212
+ // '@testing-library/svelte',
213
+ // 'svelte-jester',
214
+ // '@cypress/svelte',
215
+ // 'playwright',
216
+ // 'vitest'
217
+ // ]
218
+ // },
219
+ {
220
+ title : 'Forms' ,
221
+ packages : [ 'sveltekit-superforms' , '@tanstack/svelte-form' , 'formsnap' , 'felte' ]
222
+ }
223
+ ] ;
224
+
1
225
const OFFICIAL = [
2
226
/ ^ @ s v e l t e j s \/ / ,
3
227
'prettier-plugin-svelte' ,
@@ -22,5 +246,8 @@ function is_official(pkg: string): boolean {
22
246
}
23
247
24
248
export const PACKAGES_META = {
25
- is_official
249
+ is_official,
250
+ FEATURED ,
251
+ SV_ADD ,
252
+ SV_ADD_CMD
26
253
} ;
0 commit comments