vibefast-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.
@@ -0,0 +1,366 @@
1
+ import { Text, View } from 'react-native';
2
+ import AnimatedGlow, { type PresetConfig } from 'react-native-animated-glow';
3
+
4
+ import { useThemeConfig } from '@/lib/use-theme-config';
5
+
6
+ export type Preset = (typeof presets)[keyof typeof presets];
7
+
8
+ export const presets = {
9
+ cosmicNebula: {
10
+ cornerRadius: 70,
11
+ outlineWidth: 3,
12
+ borderColor: [
13
+ 'rgba(255, 171, 203, 1)',
14
+ 'rgba(112, 49, 164, 1)',
15
+ 'rgba(35, 21, 50, 1)',
16
+ ],
17
+ backgroundColor: '#222',
18
+ animationSpeed: 2,
19
+ randomness: 0.01,
20
+ borderSpeedMultiplier: 1,
21
+ glowLayers: [
22
+ {
23
+ glowPlacement: 'behind',
24
+ colors: ['#483D8B', '#8A2BE2', '#9370DB'],
25
+ glowSize: 20,
26
+ opacity: 0.1,
27
+ speedMultiplier: 1,
28
+ coverage: 1,
29
+ relativeOffset: 0,
30
+ },
31
+ {
32
+ glowPlacement: 'behind',
33
+ colors: [
34
+ 'rgba(185, 185, 250, 1)',
35
+ 'rgba(199, 129, 199, 1)',
36
+ 'rgba(77, 61, 175, 1)',
37
+ ],
38
+ glowSize: [2, 6],
39
+ opacity: 0.6,
40
+ speedMultiplier: 1,
41
+ coverage: 1,
42
+ relativeOffset: 0,
43
+ },
44
+ {
45
+ glowPlacement: 'over',
46
+ colors: ['rgba(185, 185, 250, 1)', 'rgba(225, 133, 242, 1)'],
47
+ glowSize: [0, 12],
48
+ opacity: 0.05,
49
+ speedMultiplier: 1.2,
50
+ coverage: 0.5,
51
+ relativeOffset: 0,
52
+ },
53
+ {
54
+ glowPlacement: 'over',
55
+ colors: ['rgba(185, 185, 250, 1)', 'rgba(255, 140, 255, 1)'],
56
+ glowSize: [0, 1],
57
+ opacity: 1,
58
+ speedMultiplier: 1.2,
59
+ coverage: 0.3,
60
+ relativeOffset: 0.9,
61
+ },
62
+ ],
63
+ },
64
+ oceanSunset: {
65
+ cornerRadius: 70,
66
+ outlineWidth: 4,
67
+ borderColor: [
68
+ 'rgba(255, 124, 171, 1)',
69
+ 'rgba(63, 100, 199, 1)',
70
+ 'rgba(240, 115, 46, 1)',
71
+ ],
72
+ backgroundColor: 'rgba(21, 21, 21, 1)',
73
+ animationSpeed: 2,
74
+ randomness: 0.01,
75
+ borderSpeedMultiplier: 1,
76
+ glowLayers: [
77
+ {
78
+ glowPlacement: 'behind',
79
+ colors: ['#f82fc6', '#5a4ff9', '#ff923e'],
80
+ glowSize: 15,
81
+ opacity: 0.1,
82
+ speedMultiplier: 1,
83
+ coverage: 1,
84
+ relativeOffset: 0,
85
+ },
86
+ {
87
+ glowPlacement: 'behind',
88
+ colors: [
89
+ 'rgba(255, 89, 213, 1)',
90
+ 'rgba(63, 89, 255, 1)',
91
+ 'rgba(255, 164, 0, 1)',
92
+ ],
93
+ glowSize: 5,
94
+ opacity: 0.5,
95
+ speedMultiplier: 1,
96
+ coverage: 1,
97
+ relativeOffset: 0,
98
+ },
99
+ ],
100
+ },
101
+ glowingBorder: {
102
+ cornerRadius: 70,
103
+ outlineWidth: 1,
104
+ borderColor: [
105
+ 'rgba(16, 16, 16, 1)',
106
+ 'rgba(227, 74, 255, 0.3)',
107
+ 'rgba(142, 88, 163, 1)',
108
+ 'rgba(98, 181, 255, 1)',
109
+ 'rgba(199, 208, 255, 1)',
110
+ 'rgba(55, 112, 169, 1)',
111
+ ],
112
+ backgroundColor: 'rgba(0, 0, 0, 1)',
113
+ animationSpeed: 1,
114
+ randomness: 0.01,
115
+ borderSpeedMultiplier: 1,
116
+ glowLayers: [
117
+ {
118
+ glowPlacement: 'over',
119
+ colors: [
120
+ 'rgba(0, 0, 0, 0)',
121
+ 'rgba(137, 73, 151, 1)',
122
+ 'rgba(85, 68, 216, 1)',
123
+ ],
124
+ glowSize: [0, 25, 20, 0],
125
+ opacity: 0.15,
126
+ speedMultiplier: 1,
127
+ coverage: 1,
128
+ relativeOffset: 0,
129
+ },
130
+ {
131
+ glowPlacement: 'over',
132
+ colors: [
133
+ 'rgba(0, 0, 0, 0)',
134
+ 'rgba(137, 73, 151, 1)',
135
+ 'rgba(85, 68, 216, 1)',
136
+ ],
137
+ glowSize: [0, 5, 5, 0],
138
+ opacity: 0.2,
139
+ speedMultiplier: 1,
140
+ coverage: 1,
141
+ relativeOffset: 0,
142
+ },
143
+ {
144
+ glowPlacement: 'over',
145
+ colors: ['rgba(166, 68, 195, 1)', 'rgba(245, 219, 255, 1)'],
146
+ glowSize: [1, 8],
147
+ opacity: 0.06,
148
+ speedMultiplier: 1,
149
+ coverage: 0.25,
150
+ relativeOffset: 0.85,
151
+ },
152
+ {
153
+ glowPlacement: 'over',
154
+ colors: ['rgba(225, 102, 235, 1)', 'rgba(245, 219, 255, 1)'],
155
+ glowSize: [0, 0.3],
156
+ opacity: 1,
157
+ speedMultiplier: 1,
158
+ coverage: 0.25,
159
+ relativeOffset: 0.85,
160
+ },
161
+ {
162
+ glowPlacement: 'over',
163
+ colors: ['rgba(83, 172, 255, 1)', 'rgba(0, 181, 255, 1)'],
164
+ glowSize: [0, 8],
165
+ opacity: 0.1,
166
+ speedMultiplier: 1,
167
+ coverage: 0.3,
168
+ relativeOffset: 0.4,
169
+ },
170
+ {
171
+ glowPlacement: 'over',
172
+ colors: ['rgba(83, 172, 255, 1)', 'rgba(255, 255, 255, 1)'],
173
+ glowSize: [0, 0.3],
174
+ opacity: 1,
175
+ speedMultiplier: 1,
176
+ coverage: 0.25,
177
+ relativeOffset: 0.4,
178
+ },
179
+ ],
180
+ },
181
+ cyberPink: {
182
+ cornerRadius: 70,
183
+ outlineWidth: 8,
184
+ borderColor: ['rgba(177, 102, 255, 1)', 'rgba(255, 102, 163, 1)'],
185
+ backgroundColor: 'rgba(27, 0, 25, 1)',
186
+ animationSpeed: 3,
187
+ randomness: 0.01,
188
+ borderSpeedMultiplier: 1,
189
+ glowLayers: [
190
+ {
191
+ glowPlacement: 'behind',
192
+ colors: ['#FF1493', 'rgba(206, 0, 255, 1)', '#DB7093'],
193
+ glowSize: 30,
194
+ opacity: 0.2,
195
+ speedMultiplier: 1,
196
+ coverage: 1,
197
+ relativeOffset: 0,
198
+ },
199
+ {
200
+ glowPlacement: 'behind',
201
+ colors: ['rgba(254, 160, 177, 1)', 'rgba(206, 180, 255, 1)'],
202
+ glowSize: 12,
203
+ opacity: 0.2,
204
+ speedMultiplier: 1,
205
+ coverage: 1,
206
+ relativeOffset: 0,
207
+ },
208
+ {
209
+ glowPlacement: 'behind',
210
+ colors: ['rgba(255, 164, 180, 1)', 'rgba(255, 217, 217, 1)'],
211
+ glowSize: 4,
212
+ opacity: 1,
213
+ speedMultiplier: 1,
214
+ coverage: 1,
215
+ relativeOffset: 0,
216
+ },
217
+ ],
218
+ },
219
+ defaultRainbow: {
220
+ cornerRadius: 30,
221
+ outlineWidth: 4,
222
+ borderColor: [
223
+ 'rgba(238, 255, 0, 1)',
224
+ 'rgba(79, 255, 0, 1)',
225
+ 'rgba(46, 90, 255, 1)',
226
+ 'rgba(254, 0, 255, 1)',
227
+ 'rgba(231, 23, 23, 1)',
228
+ ],
229
+ backgroundColor: 'rgba(10, 10, 10, 1)',
230
+ animationSpeed: 1.2,
231
+ randomness: 0.01,
232
+ borderSpeedMultiplier: 1,
233
+ glowLayers: [
234
+ {
235
+ glowPlacement: 'behind',
236
+ colors: [
237
+ 'rgba(205, 201, 35, 1)',
238
+ 'rgba(0, 255, 79, 1)',
239
+ 'rgba(0, 119, 255, 1)',
240
+ 'rgba(239, 0, 255, 1)',
241
+ 'rgba(222, 28, 28, 1)',
242
+ ],
243
+ glowSize: 34,
244
+ opacity: 0.2,
245
+ speedMultiplier: 1,
246
+ coverage: 1,
247
+ relativeOffset: 0,
248
+ },
249
+ {
250
+ glowPlacement: 'behind',
251
+ colors: [
252
+ 'rgba(185, 182, 32, 1)',
253
+ 'rgba(0, 255, 79, 1)',
254
+ 'rgba(0, 119, 255, 1)',
255
+ 'rgba(239, 0, 255, 1)',
256
+ 'rgba(222, 28, 28, 1)',
257
+ ],
258
+ glowSize: 6,
259
+ opacity: 0.5,
260
+ speedMultiplier: 1,
261
+ coverage: 1,
262
+ relativeOffset: 0,
263
+ },
264
+ {
265
+ glowPlacement: 'behind',
266
+ colors: ['#FFFFFF'],
267
+ glowSize: [2, 8, 8, 2],
268
+ opacity: 0.2,
269
+ speedMultiplier: 2,
270
+ coverage: 0.5,
271
+ relativeOffset: 0,
272
+ },
273
+ ],
274
+ },
275
+ arcticFreeze: {
276
+ cornerRadius: 60,
277
+ outlineWidth: 4,
278
+ borderColor: 'white',
279
+ backgroundColor: 'rgba(228, 246, 255, 1)',
280
+ animationSpeed: 1,
281
+ randomness: 0.01,
282
+ borderSpeedMultiplier: 1,
283
+ glowLayers: [
284
+ {
285
+ glowPlacement: 'behind',
286
+ colors: ['#00FFFF', '#E0FFFF'],
287
+ glowSize: 10,
288
+ opacity: 0.4,
289
+ speedMultiplier: 1,
290
+ coverage: 1,
291
+ relativeOffset: 0,
292
+ },
293
+ {
294
+ glowPlacement: 'behind',
295
+ colors: ['#FFFFFF', '#AFEEEE'],
296
+ glowSize: 4,
297
+ opacity: 1,
298
+ speedMultiplier: 1,
299
+ coverage: 1,
300
+ relativeOffset: 0,
301
+ },
302
+ ],
303
+ },
304
+ auroraBorealis: {
305
+ cornerRadius: 30,
306
+ outlineWidth: 0,
307
+ borderColor: 'white',
308
+ backgroundColor: '#222',
309
+ animationSpeed: 1,
310
+ randomness: 0.01,
311
+ borderSpeedMultiplier: 1,
312
+ glowLayers: [
313
+ {
314
+ glowPlacement: 'behind',
315
+ colors: ['#4ef96d', '#33a0ff', '#f5519f'],
316
+ glowSize: 30,
317
+ opacity: 0.1,
318
+ speedMultiplier: 1,
319
+ coverage: 1,
320
+ relativeOffset: 0,
321
+ },
322
+ {
323
+ glowPlacement: 'behind',
324
+ colors: ['#4ef96d', 'rgba(116, 159, 255, 1)', 'rgba(255, 114, 170, 1)'],
325
+ glowSize: 10,
326
+ opacity: 0.5,
327
+ speedMultiplier: 0.8,
328
+ coverage: 1,
329
+ relativeOffset: 0,
330
+ },
331
+ {
332
+ glowPlacement: 'behind',
333
+ colors: ['#4ef96d', 'rgba(116, 159, 255, 1)', 'rgba(255, 114, 170, 1)'],
334
+ glowSize: 3,
335
+ opacity: 1,
336
+ speedMultiplier: 0.8,
337
+ coverage: 1,
338
+ relativeOffset: 0,
339
+ },
340
+ ],
341
+ },
342
+ } as const;
343
+
344
+ interface GlowingButtonProps {
345
+ preset: keyof typeof presets; // Only allows valid preset keys
346
+ label: string;
347
+ }
348
+
349
+ export default function GlowingButton({ preset, label }: GlowingButtonProps) {
350
+ const theme = useThemeConfig();
351
+ return (
352
+ <AnimatedGlow preset={presets[preset] as unknown as PresetConfig}>
353
+ <View
354
+ className="rounded-full p-5"
355
+ style={{ backgroundColor: theme.colors.secondary }}
356
+ >
357
+ <Text
358
+ className="text-center text-base font-semibold"
359
+ style={{ color: theme.colors.secondaryForeground }}
360
+ >
361
+ {label}
362
+ </Text>
363
+ </View>
364
+ </AnimatedGlow>
365
+ );
366
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "glowing-button",
3
+ "version": "1.0.0",
4
+ "description": "Animated glowing button with multiple presets",
5
+ "target": "native",
6
+ "copy": [
7
+ {
8
+ "from": "apps/native/src/components/advanced-ui/buttons",
9
+ "to": "apps/native/src/components/advanced-ui/buttons"
10
+ }
11
+ ],
12
+ "dependencies": {
13
+ "expo": ["react-native-reanimated"]
14
+ }
15
+ }
@@ -0,0 +1,57 @@
1
+ #!/bin/bash
2
+
3
+ # Create advanced UI recipes from monorepo components
4
+
5
+ RECIPES_DIR="recipes"
6
+ MONOREPO="../vibefast-monorepo"
7
+
8
+ # Define advanced UI components
9
+ declare -A COMPONENTS=(
10
+ ["glowing-button"]="buttons"
11
+ ["animated-chip"]="chip"
12
+ ["number-stepper"]="stepper"
13
+ ["animated-switch"]="switch"
14
+ ["progress-circle"]="progress-bars"
15
+ ["swipe-slider"]="sliders"
16
+ ["timeline"]="timeline"
17
+ )
18
+
19
+ for component in "${!COMPONENTS[@]}"; do
20
+ folder="${COMPONENTS[$component]}"
21
+ echo "Creating recipe for $component from $folder..."
22
+
23
+ # Create recipe directory structure
24
+ mkdir -p "$RECIPES_DIR/$component/apps/native/src/components/advanced-ui/$folder"
25
+
26
+ # Copy component files
27
+ cp -r "$MONOREPO/apps/native/src/components/advanced-ui/$folder"/* \
28
+ "$RECIPES_DIR/$component/apps/native/src/components/advanced-ui/$folder/" 2>/dev/null || true
29
+
30
+ # Create recipe.json
31
+ cat > "$RECIPES_DIR/$component/recipe.json" <<EOF
32
+ {
33
+ "name": "$component",
34
+ "version": "1.0.0",
35
+ "description": "Advanced UI component: $component",
36
+ "target": "native",
37
+ "copy": [
38
+ {
39
+ "from": "apps/native/src/components/advanced-ui/$folder",
40
+ "to": "apps/native/src/components/advanced-ui/$folder"
41
+ }
42
+ ],
43
+ "dependencies": {
44
+ "expo": [
45
+ "react-native-reanimated",
46
+ "react-native-gesture-handler"
47
+ ]
48
+ }
49
+ }
50
+ EOF
51
+
52
+ echo "✓ Created $component recipe"
53
+ done
54
+
55
+ echo ""
56
+ echo "All advanced UI recipes created!"
57
+ echo "Now run: ./recipes/upload-all.sh"
@@ -83,49 +83,13 @@ export const RECIPES: RecipeInfo[] = [
83
83
  icon: '💳',
84
84
  },
85
85
 
86
- // Advanced UI Components
86
+ // Advanced UI
87
87
  {
88
88
  name: 'glowing-button',
89
89
  category: 'advanced-ui',
90
90
  description: 'Animated glowing button with presets',
91
91
  icon: '✨',
92
92
  },
93
- {
94
- name: 'animated-chip',
95
- category: 'advanced-ui',
96
- description: 'Animated chip component',
97
- icon: '🏷️',
98
- },
99
- {
100
- name: 'number-stepper',
101
- category: 'advanced-ui',
102
- description: 'Number stepper with animations',
103
- icon: '🔢',
104
- },
105
- {
106
- name: 'animated-switch',
107
- category: 'advanced-ui',
108
- description: 'Smooth animated switch',
109
- icon: '🎚️',
110
- },
111
- {
112
- name: 'progress-circle',
113
- category: 'advanced-ui',
114
- description: 'Circular progress indicator',
115
- icon: '⭕',
116
- },
117
- {
118
- name: 'swipe-slider',
119
- category: 'advanced-ui',
120
- description: 'Swipeable slider component',
121
- icon: '👆',
122
- },
123
- {
124
- name: 'timeline',
125
- category: 'advanced-ui',
126
- description: 'Timeline view component',
127
- icon: '📅',
128
- },
129
93
  ];
130
94
 
131
95
  /**