@digilogiclabs/create-saas-app 1.6.8 → 1.8.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 (26) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/templates/mobile/base/template/package.json +1 -1
  3. package/dist/templates/web/base/template/package.json +1 -1
  4. package/dist/templates/web/ui-auth/template/package.json +2 -2
  5. package/dist/templates/web/ui-auth/template/src/app/page.tsx +5 -5
  6. package/dist/templates/web/ui-auth-payments/template/package.json +2 -2
  7. package/dist/templates/web/ui-auth-payments/template/src/app/page.tsx +5 -5
  8. package/dist/templates/web/ui-auth-payments-audio/template/package.json +2 -2
  9. package/dist/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +193 -178
  10. package/dist/templates/web/ui-auth-payments-video/template/package.json +2 -2
  11. package/dist/templates/web/ui-auth-payments-video/template/src/app/page.tsx +16 -16
  12. package/dist/templates/web/ui-only/template/package.json +2 -2
  13. package/dist/templates/web/ui-package-test/template/package.json +2 -2
  14. package/package.json +1 -1
  15. package/src/templates/mobile/base/template/package.json +1 -1
  16. package/src/templates/web/base/template/package.json +1 -1
  17. package/src/templates/web/ui-auth/template/package.json +2 -2
  18. package/src/templates/web/ui-auth/template/src/app/page.tsx +5 -5
  19. package/src/templates/web/ui-auth-payments/template/package.json +2 -2
  20. package/src/templates/web/ui-auth-payments/template/src/app/page.tsx +5 -5
  21. package/src/templates/web/ui-auth-payments-audio/template/package.json +2 -2
  22. package/src/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +193 -178
  23. package/src/templates/web/ui-auth-payments-video/template/package.json +2 -2
  24. package/src/templates/web/ui-auth-payments-video/template/src/app/page.tsx +16 -16
  25. package/src/templates/web/ui-only/template/package.json +2 -2
  26. package/src/templates/web/ui-package-test/template/package.json +2 -2
@@ -39,7 +39,7 @@ export default function Home() {
39
39
 
40
40
  const heroConfig = {
41
41
  badge: {
42
- text: "UI Package v0.13.2 + Auth v1.0.0 - Cross-Device Ready",
42
+ text: "🔒 Secure & Modern",
43
43
  variant: "secondary" as const,
44
44
  icon: CheckCircle
45
45
  },
@@ -48,7 +48,7 @@ export default function Home() {
48
48
  highlight: projectName,
49
49
  size: "xl" as const
50
50
  },
51
- description: `${projectDescription}. This mobile-optimized template uses SaaS Factory UI package v0.13.0 with cross-device authentication v1.0.0.`
51
+ description: `${projectDescription}. Built with modern authentication, responsive design, and seamless user experience across all devices.`
52
52
  }
53
53
 
54
54
  const handleSignOut = async () => {
@@ -158,7 +158,7 @@ export default function Home() {
158
158
  </div>
159
159
  <h3 className="text-lg font-semibold mb-2">Mobile-First UI</h3>
160
160
  <p className="text-sm text-gray-600 dark:text-gray-300">
161
- Touch-optimized components from @digilogiclabs/saas-factory-ui v0.13.2
161
+ Touch-optimized components from @digilogiclabs/saas-factory-ui v0.13.3
162
162
  </p>
163
163
  </Card>
164
164
  </SwipeableCard>
@@ -209,7 +209,7 @@ export default function Home() {
209
209
  </div>
210
210
  <h3 className="text-lg font-semibold mb-2">Touch UI Components</h3>
211
211
  <p className="text-sm text-gray-600 dark:text-gray-300">
212
- Mobile-first buttons, cards, and gestures from @digilogiclabs/saas-factory-ui v0.13.2
212
+ Mobile-first buttons, cards, and gestures from @digilogiclabs/saas-factory-ui v0.13.3
213
213
  </p>
214
214
  </Card>
215
215
  </SwipeableCard>
@@ -280,7 +280,7 @@ export default function Home() {
280
280
  </div>
281
281
  <div className="text-center">
282
282
  <p className="text-sm text-gray-500">
283
- All mobile-optimized components from @digilogiclabs/saas-factory-ui v0.13.2 + auth v1.0.0
283
+ All mobile-optimized components from @digilogiclabs/saas-factory-ui v0.13.3 + auth v1.0.0
284
284
  </p>
285
285
  </div>
286
286
  </Card>
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "{{packageName}}",
3
3
  "version": "0.1.0",
4
- "description": "{{description}} (with UI Package v0.13.2 + Auth v1.0.0 + Payments)",
4
+ "description": "{{description}} (with UI Package v0.15.0 + Auth v1.0.0 + Payments)",
5
5
  "private": true,
6
6
  "scripts": {
7
7
  "dev": "next dev",
@@ -17,7 +17,7 @@
17
17
  "next": "^15.0.0",
18
18
  "react": "^19.0.0",
19
19
  "react-dom": "^19.0.0",
20
- "@digilogiclabs/saas-factory-ui": "^0.13.2",
20
+ "@digilogiclabs/saas-factory-ui": "^0.15.0",
21
21
  "@digilogiclabs/saas-factory-auth": "^1.0.0",
22
22
  "@digilogiclabs/saas-factory-payments": "^1.0.0",
23
23
  "stripe": "^14.0.0",
@@ -43,7 +43,7 @@ export default function Home() {
43
43
 
44
44
  const heroConfig = {
45
45
  badge: {
46
- text: "UI Package v0.13.2 + Auth v1.0.0 + Payments - Mobile-First Ready",
46
+ text: "🚀 Complete SaaS Solution",
47
47
  variant: "secondary" as const,
48
48
  icon: CheckCircle
49
49
  },
@@ -52,7 +52,7 @@ export default function Home() {
52
52
  highlight: projectName,
53
53
  size: "xl" as const
54
54
  },
55
- description: `${projectDescription}. This mobile-optimized template uses SaaS Factory UI package v0.13.0 with cross-device authentication v1.0.0 and touch-friendly payments integration.`
55
+ description: `${projectDescription}. Everything you need to launch your SaaS business with secure authentication, seamless payments, and beautiful mobile-first design.`
56
56
  }
57
57
 
58
58
  const handleSignOut = async () => {
@@ -177,7 +177,7 @@ export default function Home() {
177
177
  </div>
178
178
  <h3 className="text-lg font-semibold mb-2">Mobile-First UI</h3>
179
179
  <p className="text-sm text-gray-600 dark:text-gray-300">
180
- Touch-optimized components from @digilogiclabs/saas-factory-ui v0.13.2
180
+ Touch-optimized components from @digilogiclabs/saas-factory-ui v0.13.3
181
181
  </p>
182
182
  </Card>
183
183
  </SwipeableCard>
@@ -228,7 +228,7 @@ export default function Home() {
228
228
  </div>
229
229
  <h3 className="text-lg font-semibold mb-2">Mobile UI Components</h3>
230
230
  <p className="text-sm text-gray-600 dark:text-gray-300">
231
- Touch-optimized buttons, cards, and gestures from @digilogiclabs/saas-factory-ui v0.13.2
231
+ Touch-optimized buttons, cards, and gestures from @digilogiclabs/saas-factory-ui v0.13.3
232
232
  </p>
233
233
  </Card>
234
234
  </SwipeableCard>
@@ -323,7 +323,7 @@ export default function Home() {
323
323
  </div>
324
324
  <div className="text-center">
325
325
  <p className="text-sm text-gray-500">
326
- All mobile-optimized components from @digilogiclabs/saas-factory-ui v0.13.2 + auth v1.0.0 + payments v1.0.0
326
+ All mobile-optimized components from @digilogiclabs/saas-factory-ui v0.13.3 + auth v1.0.0 + payments v1.0.0
327
327
  </p>
328
328
  </div>
329
329
  </Card>
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "{{packageName}}",
3
3
  "version": "0.1.0",
4
- "description": "{{description}} - Audio Player App (with UI Package v0.13.2 + Auth v1.0.0 + Payments)",
4
+ "description": "{{description}} - Professional Audio Platform (with UI Package v0.15.0 + Auth v1.0.0 + Payments)",
5
5
  "private": true,
6
6
  "scripts": {
7
7
  "dev": "next dev",
@@ -17,7 +17,7 @@
17
17
  "next": "^15.0.0",
18
18
  "react": "^19.0.0",
19
19
  "react-dom": "^19.0.0",
20
- "@digilogiclabs/saas-factory-ui": "^0.13.2",
20
+ "@digilogiclabs/saas-factory-ui": "^0.15.0",
21
21
  "@digilogiclabs/saas-factory-auth": "^1.0.0",
22
22
  "@digilogiclabs/saas-factory-payments": "^1.0.0",
23
23
  "stripe": "^14.0.0",
@@ -13,7 +13,21 @@ import {
13
13
  SwipeableCard,
14
14
  PullToRefresh,
15
15
  useNetworkInfo,
16
- useOfflineState
16
+ useOfflineState,
17
+ FixedAudioBar,
18
+ PlaylistCard,
19
+ TrackList,
20
+ WaveformVisualizer,
21
+ AudioControls,
22
+ VolumeSlider,
23
+ ProgressBar,
24
+ ShuffleButton,
25
+ RepeatButton,
26
+ LikeButton,
27
+ ShareButton,
28
+ PlaylistSidebar,
29
+ AudioSearch,
30
+ NowPlayingCard
17
31
  } from '@digilogiclabs/saas-factory-ui'
18
32
  import { ArrowRight, Zap, Shield, Rocket, CheckCircle, LogOut, User, Music, Wifi, WifiOff } from 'lucide-react'
19
33
  import { useAuth } from '@digilogiclabs/saas-factory-auth'
@@ -25,6 +39,9 @@ export default function Home() {
25
39
  const networkInfo = useNetworkInfo()
26
40
  const isOnline = useOfflineState()
27
41
  const [isRefreshing, setIsRefreshing] = useState(false)
42
+ const [currentTrack, setCurrentTrack] = useState(null)
43
+ const [isPlaying, setIsPlaying] = useState(false)
44
+ const [showPlaylistSidebar, setShowPlaylistSidebar] = useState(false)
28
45
 
29
46
  const projectName = "{{titleCaseName}}"
30
47
  const projectDescription = "{{description}}"
@@ -41,9 +58,53 @@ export default function Home() {
41
58
  columns_2_md4: { base: 2, md: 4 }
42
59
  }
43
60
 
61
+ // Demo playlist data
62
+ const demoPlaylist = [
63
+ {
64
+ id: '1',
65
+ title: 'Midnight Echoes',
66
+ artist: 'Luna Rivers',
67
+ album: 'Digital Dreams',
68
+ duration: 180,
69
+ url: 'https://www.soundjay.com/misc/sounds/bell-ringing-05.mp3',
70
+ coverArt: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCIgdmlld0JveD0iMCAwIDMwMCAzMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3Qgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiIGZpbGw9IiM4QjVDRjYiLz48Y2lyY2xlIGN4PSIxNTAiIGN5PSIxNTAiIHI9IjYwIiBmaWxsPSJ3aGl0ZSIgZmlsbC1vcGFjaXR5PSIwLjIiLz48cGF0aCBkPSJNMTMwIDEyMFYxODBMMTcwIDE1MEwxMzAgMTIwWiIgZmlsbD0id2hpdGUiLz48L3N2Zz4=',
71
+ liked: false
72
+ },
73
+ {
74
+ id: '2',
75
+ title: 'Neon Nights',
76
+ artist: 'The Frequency',
77
+ album: 'Electric Pulse',
78
+ duration: 210,
79
+ url: 'https://www.soundjay.com/misc/sounds/bell-ringing-05.mp3',
80
+ coverArt: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCIgdmlld0JveD0iMCAwIDMwMCAzMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3Qgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiIGZpbGw9IiNFRjQ0NDQiLz48Y2lyY2xlIGN4PSIxNTAiIGN5PSIxNTAiIHI9IjYwIiBmaWxsPSJ3aGl0ZSIgZmlsbC1vcGFjaXR5PSIwLjIiLz48cGF0aCBkPSJNMTMwIDEyMFYxODBMMTcwIDE1MEwxMzAgMTIwWiIgZmlsbD0id2hpdGUiLz48L3N2Zz4=',
81
+ liked: true
82
+ },
83
+ {
84
+ id: '3',
85
+ title: 'Ocean Waves',
86
+ artist: 'Ambient Flow',
87
+ album: 'Nature Sounds',
88
+ duration: 195,
89
+ url: 'https://www.soundjay.com/misc/sounds/bell-ringing-05.mp3',
90
+ coverArt: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCIgdmlld0JveD0iMCAwIDMwMCAzMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3Qgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiIGZpbGw9IiMwNjkyQzUiLz48Y2lyY2xlIGN4PSIxNTAiIGN5PSIxNTAiIHI9IjYwIiBmaWxsPSJ3aGl0ZSIgZmlsbC1vcGFjaXR5PSIwLjIiLz48cGF0aCBkPSJNMTMwIDEyMFYxODBMMTcwIDE1MEwxMzAgMTIwWiIgZmlsbD0id2hpdGUiLz48L3N2Zz4=',
91
+ liked: false
92
+ },
93
+ {
94
+ id: '4',
95
+ title: 'City Lights',
96
+ artist: 'Urban Echo',
97
+ album: 'Metropolitan',
98
+ duration: 225,
99
+ url: 'https://www.soundjay.com/misc/sounds/bell-ringing-05.mp3',
100
+ coverArt: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCIgdmlld0JveD0iMCAwIDMwMCAzMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3Qgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiIGZpbGw9IiNGNTk3MDAiLz48Y2lyY2xlIGN4PSIxNTAiIGN5PSIxNTAiIHI9IjYwIiBmaWxsPSJ3aGl0ZSIgZmlsbC1vcGFjaXR5PSIwLjIiLz48cGF0aCBkPSJNMTMwIDEyMFYxODBMMTcwIDE1MEwxMzAgMTIwWiIgZmlsbD0id2hpdGUiLz48L3N2Zz4=',
101
+ liked: true
102
+ }
103
+ ]
104
+
44
105
  const heroConfig = {
45
106
  badge: {
46
- text: "Audio Player App - UI Package v0.13.2 + Auth v1.0.0 + Payments Integrated Successfully",
107
+ text: "🎵 Premium Audio Experience",
47
108
  variant: "secondary" as const,
48
109
  icon: CheckCircle
49
110
  },
@@ -52,7 +113,7 @@ export default function Home() {
52
113
  highlight: projectName,
53
114
  size: "xl" as const
54
115
  },
55
- description: `${projectDescription}. This mobile-optimized audio streaming app template uses SaaS Factory UI package v0.13.0 with touch-friendly audio player components, authentication v1.0.0 and payments integration.`
116
+ description: `${projectDescription}. Stream your favorite music with crystal-clear quality, offline downloads, and seamless playback across all your devices.`
56
117
  }
57
118
 
58
119
  const handleSignOut = async () => {
@@ -85,42 +146,24 @@ export default function Home() {
85
146
  networkAware={true}
86
147
  >
87
148
  <main className="min-h-screen bg-gradient-to-br from-blue-50 to-indigo-100 dark:from-gray-900 dark:to-gray-800">
88
- <MobileContainer className="py-16">
89
- {/* Auth Status Bar with Network Info */}
90
- <div className="flex flex-col sm:flex-row justify-between items-center mb-8 gap-4">
91
- <div className="flex items-center gap-2 text-sm">
92
- {isOnline ? (
93
- <div className="flex items-center gap-2 text-green-600">
94
- <Wifi className="w-4 h-4" />
95
- <span>Online</span>
96
- {networkInfo?.effectiveType && (
97
- <span className="bg-green-100 text-green-800 px-2 py-1 rounded text-xs">
98
- {networkInfo.effectiveType.toUpperCase()}
99
- </span>
100
- )}
101
- </div>
102
- ) : (
103
- <div className="flex items-center gap-2 text-red-600">
104
- <WifiOff className="w-4 h-4" />
105
- <span>Offline</span>
106
- </div>
107
- )}
108
- </div>
109
-
110
- {loading ? (
111
- <div className="text-sm text-gray-600">Loading...</div>
112
- ) : user ? (
149
+ <MobileContainer className="py-8">
150
+ {/* Simple Auth Status */}
151
+ {user && (
152
+ <div className="flex justify-end mb-8">
113
153
  <div className="flex items-center gap-4">
114
- <div className="flex items-center gap-2 text-sm text-gray-600 dark:text-gray-300">
115
- <User className="w-4 h-4" />
116
- Welcome, {user.email}
117
- </div>
154
+ <span className="text-sm text-gray-600 dark:text-gray-300">
155
+ Welcome, {user.email?.split('@')[0]}
156
+ </span>
118
157
  <Button variant="outline" size="sm" onClick={handleSignOut}>
119
158
  <LogOut className="w-4 h-4 mr-2" />
120
159
  Sign Out
121
160
  </Button>
122
161
  </div>
123
- ) : (
162
+ </div>
163
+ )}
164
+
165
+ {!user && !loading && (
166
+ <div className="flex justify-end mb-8">
124
167
  <div className="flex gap-2">
125
168
  <Link href="/login">
126
169
  <Button variant="outline" size="sm">Sign In</Button>
@@ -129,10 +172,10 @@ export default function Home() {
129
172
  <Button size="sm">Sign Up</Button>
130
173
  </Link>
131
174
  </div>
132
- )}
133
- </div>
175
+ </div>
176
+ )}
134
177
 
135
- {/* Hero Section */}
178
+ {/* Hero Section with Search */}
136
179
  <MobileHero
137
180
  badge={heroConfig.badge}
138
181
  title={heroConfig.title}
@@ -151,131 +194,99 @@ export default function Home() {
151
194
  size: "lg"
152
195
  }
153
196
  ]}
154
- className="text-center mb-16"
197
+ className="text-center mb-8"
155
198
  />
156
199
 
157
- {/* Audio Player Showcase */}
158
- <NetworkAwareContent
159
- showOnSlow={
160
- <div className="max-w-4xl mx-auto mb-16">
161
- <Card className="p-6">
162
- <div className="text-center mb-6">
163
- <div className="mx-auto w-12 h-12 bg-purple-100 dark:bg-purple-900 rounded-full flex items-center justify-center mb-4">
164
- <Music className="h-6 w-6 text-purple-600 dark:text-purple-400" />
165
- </div>
166
- <h2 className="text-xl font-bold mb-2">Mobile Audio Player</h2>
167
- <p className="text-sm text-gray-600 dark:text-gray-300">
168
- Optimized for slower connections
169
- </p>
170
- </div>
171
- <AudioPlayer
172
- playlist={[
173
- {
174
- id: '1',
175
- title: 'Sample Audio Track',
176
- artist: 'Demo Artist',
177
- album: 'Demo Album',
178
- duration: 180,
179
- url: 'https://www.soundjay.com/misc/sounds/bell-ringing-05.mp3',
180
- coverArt: 'https://via.placeholder.com/150x150?text=Demo'
181
- }
182
- ]}
183
- mobileOptimized={true}
184
- touchFriendly={true}
185
- showMinimalUI={true}
186
- className="max-w-lg mx-auto"
187
- />
188
- </Card>
189
- </div>
190
- }
191
- >
192
- <SwipeableCard
193
- leftActions={[
194
- {
195
- id: 'previous',
196
- label: 'Previous',
197
- onAction: () => console.log('Previous track'),
198
- color: 'blue',
199
- icon: Music
200
- }
201
- ]}
202
- rightActions={[
203
- {
204
- id: 'next',
205
- label: 'Next',
206
- onAction: () => console.log('Next track'),
207
- color: 'green',
208
- icon: Music
209
- }
210
- ]}
211
- threshold={60}
212
- hapticFeedback={true}
213
- showActionLabels={true}
214
- className="max-w-4xl mx-auto mb-16"
215
- >
216
- <Card className="p-8">
217
- <div className="text-center mb-8">
218
- <div className="mx-auto w-16 h-16 bg-purple-100 dark:bg-purple-900 rounded-full flex items-center justify-center mb-4">
219
- <Music className="h-8 w-8 text-purple-600 dark:text-purple-400" />
220
- </div>
221
- <h2 className="text-3xl font-bold mb-4">Touch-Optimized Audio Player</h2>
222
- <p className="text-gray-600 dark:text-gray-300 mb-2">
223
- Experience our feature-rich audio player with playlist support, touch gestures, and mobile-first design
224
- </p>
225
- <p className="text-sm text-gray-500">
226
- Swipe left/right to change tracks • Pull down to refresh
227
- </p>
228
- </div>
229
- <AudioPlayer
230
- playlist={[
231
- {
232
- id: '1',
233
- title: 'Sample Audio Track',
234
- artist: 'Demo Artist',
235
- album: 'Demo Album',
236
- duration: 180,
237
- url: 'https://www.soundjay.com/misc/sounds/bell-ringing-05.mp3',
238
- coverArt: 'https://via.placeholder.com/300x300?text=Demo+Track'
239
- },
240
- {
241
- id: '2',
242
- title: 'Another Great Song',
243
- artist: 'Sample Band',
244
- album: 'Greatest Hits',
245
- duration: 210,
246
- url: 'https://www.soundjay.com/misc/sounds/bell-ringing-05.mp3',
247
- coverArt: 'https://via.placeholder.com/300x300?text=Track+2'
248
- },
249
- {
250
- id: '3',
251
- title: 'Mobile Optimized Track',
252
- artist: 'Touch Artist',
253
- album: 'Mobile Collection',
254
- duration: 195,
255
- url: 'https://www.soundjay.com/misc/sounds/bell-ringing-05.mp3',
256
- coverArt: 'https://via.placeholder.com/300x300?text=Track+3'
257
- }
258
- ]}
259
- mobileOptimized={true}
260
- touchFriendly={true}
261
- hapticFeedback={true}
262
- offlineSupport={true}
263
- networkAware={true}
264
- className="max-w-2xl mx-auto"
200
+ {/* Search Bar */}
201
+ <div className="max-w-2xl mx-auto mb-12">
202
+ <AudioSearch
203
+ placeholder="Search for tracks, artists, or albums..."
204
+ onSearch={(query) => console.log('Searching:', query)}
205
+ showTrending={true}
206
+ recentSearches={['Luna Rivers', 'Ambient Flow', 'Electronic']}
207
+ className="w-full"
208
+ />
209
+ </div>
210
+
211
+ {/* Main Content Area */}
212
+ <div className="grid grid-cols-1 lg:grid-cols-4 gap-8 mb-20">
213
+ {/* Main Content */}
214
+ <div className="lg:col-span-3 space-y-8">
215
+ {/* Now Playing Card */}
216
+ <NowPlayingCard
217
+ track={currentTrack || demoPlaylist[0]}
218
+ isPlaying={isPlaying}
219
+ onPlayPause={() => setIsPlaying(!isPlaying)}
220
+ showWaveform={true}
221
+ className="mb-8"
222
+ />
223
+
224
+ {/* Featured Playlists */}
225
+ <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6 mb-8">
226
+ <PlaylistCard
227
+ title="Today's Top Hits"
228
+ description="The most played songs today"
229
+ trackCount={50}
230
+ coverImage="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCIgdmlld0JveD0iMCAwIDMwMCAzMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3Qgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiIGZpbGw9IiNGRjc4NzgiLz48Y2lyY2xlIGN4PSIxNTAiIGN5PSIxNTAiIHI9IjYwIiBmaWxsPSJ3aGl0ZSIgZmlsbC1vcGFjaXR5PSIwLjMiLz48cGF0aCBkPSJNMTMwIDEyMFYxODBMMTcwIDE1MEwxMzAgMTIwWiIgZmlsbD0id2hpdGUiLz48L3N2Zz4="
231
+ onClick={() => console.log('Opening Top Hits playlist')}
232
+ />
233
+ <PlaylistCard
234
+ title="Chill Vibes"
235
+ description="Relaxing music for focus and creativity"
236
+ trackCount={32}
237
+ coverImage="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCIgdmlld0JveD0iMCAwIDMwMCAzMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3Qgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiIGZpbGw9IiM2MEE1RkEiLz48Y2lyY2xlIGN4PSIxNTAiIGN5PSIxNTAiIHI9IjYwIiBmaWxsPSJ3aGl0ZSIgZmlsbC1vcGFjaXR5PSIwLjMiLz48cGF0aCBkPSJNMTMwIDEyMFYxODBMMTcwIDE1MEwxMzAgMTIwWiIgZmlsbD0id2hpdGUiLz48L3N2Zz4="
238
+ onClick={() => console.log('Opening Chill Vibes playlist')}
265
239
  />
266
- </Card>
267
- </SwipeableCard>
268
- </NetworkAwareContent>
240
+ <PlaylistCard
241
+ title="Electronic Pulse"
242
+ description="High-energy electronic and dance music"
243
+ trackCount={28}
244
+ coverImage="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCIgdmlld0JveD0iMCAwIDMwMCAzMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3Qgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiIGZpbGw9IiM5QzI3QjAiLz48Y2lyY2xlIGN4PSIxNTAiIGN5PSIxNTAiIHI9IjYwIiBmaWxsPSJ3aGl0ZSIgZmlsbC1vcGFjaXR5PSIwLjMiLz48cGF0aCBkPSJNMTMwIDEyMFYxODBMMTcwIDE1MEwxMzAgMTIwWiIgZmlsbD0id2hpdGUiLz48L3N2Zz4="
245
+ onClick={() => console.log('Opening Electronic Pulse playlist')}
246
+ />
247
+ </div>
248
+
249
+ {/* Track List */}
250
+ <TrackList
251
+ tracks={demoPlaylist}
252
+ currentTrackId={currentTrack?.id}
253
+ onTrackSelect={(track) => setCurrentTrack(track)}
254
+ onTrackPlay={(track) => {
255
+ setCurrentTrack(track)
256
+ setIsPlaying(true)
257
+ }}
258
+ showArtwork={true}
259
+ showDuration={true}
260
+ showLikeButton={true}
261
+ className="mb-8"
262
+ />
263
+ </div>
264
+
265
+ {/* Sidebar */}
266
+ <div className="lg:col-span-1">
267
+ <PlaylistSidebar
268
+ playlists={[
269
+ { id: '1', name: 'Liked Songs', trackCount: 47 },
270
+ { id: '2', name: 'Recently Played', trackCount: 23 },
271
+ { id: '3', name: 'My Playlist #1', trackCount: 15 },
272
+ { id: '4', name: 'Favorites', trackCount: 32 }
273
+ ]}
274
+ onPlaylistSelect={(playlist) => console.log('Selected playlist:', playlist)}
275
+ currentPlaylistId="1"
276
+ className="sticky top-4"
277
+ />
278
+ </div>
279
+ </div>
269
280
 
270
- {/* Component Showcase */}
281
+ {/* Features Overview */}
271
282
  <ResponsiveGrid columns={gridConfig.columns_1_sm2_md4} gap="lg" className="mb-16">
272
283
  <Card className="text-center p-6">
273
284
  <div className="mx-auto w-12 h-12 bg-blue-100 dark:bg-blue-900 rounded-lg flex items-center justify-center mb-4">
274
285
  <Zap className="h-6 w-6 text-blue-600 dark:text-blue-400" />
275
286
  </div>
276
- <h3 className="text-lg font-semibold mb-2">Mobile Audio UI</h3>
287
+ <h3 className="text-lg font-semibold mb-2">High-Quality Streaming</h3>
277
288
  <p className="text-sm text-gray-600 dark:text-gray-300">
278
- Touch-friendly Audio Player with haptic feedback from @digilogiclabs/saas-factory-ui v0.13.2
289
+ Lossless audio with adaptive bitrate for the best experience
279
290
  </p>
280
291
  </Card>
281
292
 
@@ -283,9 +294,9 @@ export default function Home() {
283
294
  <div className="mx-auto w-12 h-12 bg-green-100 dark:bg-green-900 rounded-lg flex items-center justify-center mb-4">
284
295
  <Shield className="h-6 w-6 text-green-600 dark:text-green-400" />
285
296
  </div>
286
- <h3 className="text-lg font-semibold mb-2">Cross-Device Auth</h3>
297
+ <h3 className="text-lg font-semibold mb-2">Secure & Private</h3>
287
298
  <p className="text-sm text-gray-600 dark:text-gray-300">
288
- Secure authentication across all devices with @digilogiclabs/saas-factory-auth v1.0.0
299
+ Your listening habits and data are always protected
289
300
  </p>
290
301
  </Card>
291
302
 
@@ -293,9 +304,9 @@ export default function Home() {
293
304
  <div className="mx-auto w-12 h-12 bg-purple-100 dark:bg-purple-900 rounded-lg flex items-center justify-center mb-4">
294
305
  <Rocket className="h-6 w-6 text-purple-600 dark:text-purple-400" />
295
306
  </div>
296
- <h3 className="text-lg font-semibold mb-2">Performance First</h3>
307
+ <h3 className="text-lg font-semibold mb-2">Offline Support</h3>
297
308
  <p className="text-sm text-gray-600 dark:text-gray-300">
298
- Network-aware components with offline support and lazy loading
309
+ Download your favorites for offline listening anywhere
299
310
  </p>
300
311
  </Card>
301
312
 
@@ -305,37 +316,41 @@ export default function Home() {
305
316
  <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M3 10h18M7 15h1m4 0h1m-7 4h12a3 3 0 003-3V8a3 3 0 00-3-3H6a3 3 0 00-3 3v8a3 3 0 003 3z" />
306
317
  </svg>
307
318
  </div>
308
- <h3 className="text-lg font-semibold mb-2">Mobile Payments</h3>
319
+ <h3 className="text-lg font-semibold mb-2">Premium Plans</h3>
309
320
  <p className="text-sm text-gray-600 dark:text-gray-300">
310
- Touch-optimized payment flows with @digilogiclabs/saas-factory-payments v1.0.0
321
+ Flexible subscription options for every music lover
311
322
  </p>
312
323
  </Card>
313
324
  </ResponsiveGrid>
314
-
315
- {/* Button Variants Showcase */}
316
- <Card className="max-w-4xl mx-auto p-8">
317
- <div className="text-center mb-6">
318
- <h2 className="text-2xl font-bold mb-2">Full SaaS Package Integration</h2>
319
- <p className="text-gray-600 dark:text-gray-300">
320
- Complete integration of UI, Auth, and Payments packages
321
- </p>
322
- </div>
323
- <div className="flex flex-wrap justify-center gap-4 mb-6">
324
- <Button>Default Button</Button>
325
- <Button variant="secondary">Secondary Button</Button>
326
- <Button variant="outline">Outline Button</Button>
327
- <Button disabled>Disabled Button</Button>
328
- </div>
329
- <div className="text-center">
330
- <p className="text-sm text-gray-500">
331
- All mobile-optimized components from @digilogiclabs/saas-factory-ui v0.13.2 + auth v1.0.0 + payments
332
- </p>
333
- </div>
334
- </Card>
335
325
  </MobileContainer>
336
326
  </main>
337
327
  </PullToRefresh>
338
328
  </OfflineWrapper>
329
+
330
+ {/* Fixed Audio Player Bar - The SoundCloud Experience */}
331
+ <FixedAudioBar
332
+ track={currentTrack || demoPlaylist[0]}
333
+ isPlaying={isPlaying}
334
+ onPlayPause={() => setIsPlaying(!isPlaying)}
335
+ onNext={() => {
336
+ const currentIndex = demoPlaylist.findIndex(track => track.id === (currentTrack?.id || demoPlaylist[0].id))
337
+ const nextIndex = (currentIndex + 1) % demoPlaylist.length
338
+ setCurrentTrack(demoPlaylist[nextIndex])
339
+ }}
340
+ onPrevious={() => {
341
+ const currentIndex = demoPlaylist.findIndex(track => track.id === (currentTrack?.id || demoPlaylist[0].id))
342
+ const prevIndex = (currentIndex - 1 + demoPlaylist.length) % demoPlaylist.length
343
+ setCurrentTrack(demoPlaylist[prevIndex])
344
+ }}
345
+ showWaveform={true}
346
+ showVolumeControl={true}
347
+ showTimeProgress={true}
348
+ showLikeButton={true}
349
+ showShareButton={true}
350
+ showShuffleRepeat={true}
351
+ allowMinimize={true}
352
+ className="z-50"
353
+ />
339
354
  </PageTransition>
340
355
  )
341
356
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "{{packageName}}",
3
3
  "version": "0.1.0",
4
- "description": "{{description}} - Video Player App (with UI Package v0.13.2 + Auth v1.0.0 + Payments)",
4
+ "description": "{{description}} - Professional Video Platform (with UI Package v0.15.0 + Auth v1.0.0 + Payments)",
5
5
  "private": true,
6
6
  "scripts": {
7
7
  "dev": "next dev",
@@ -17,7 +17,7 @@
17
17
  "next": "^15.0.0",
18
18
  "react": "^19.0.0",
19
19
  "react-dom": "^19.0.0",
20
- "@digilogiclabs/saas-factory-ui": "^0.13.2",
20
+ "@digilogiclabs/saas-factory-ui": "^0.15.0",
21
21
  "@digilogiclabs/saas-factory-auth": "^1.0.0",
22
22
  "@digilogiclabs/saas-factory-payments": "^1.0.0",
23
23
  "stripe": "^14.0.0",