@digilogiclabs/create-saas-app 1.5.3 → 1.6.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 (56) hide show
  1. package/CHANGELOG.md +109 -49
  2. package/bin/index.js +1 -1
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/templates/mobile/base/template/App.tsx +113 -23
  5. package/dist/templates/mobile/base/template/package.json +41 -38
  6. package/dist/templates/web/base/template/package.json +2 -2
  7. package/dist/templates/web/base/template/src/app/checkout/page.tsx +99 -8
  8. package/dist/templates/web/base/template/src/app/dashboard/page.tsx +309 -0
  9. package/dist/templates/web/base/template/src/app/globals.css +97 -0
  10. package/dist/templates/web/base/template/src/app/login/page.tsx +36 -8
  11. package/dist/templates/web/base/template/src/app/page.tsx +123 -83
  12. package/dist/templates/web/base/template/src/app/signup/page.tsx +36 -8
  13. package/dist/templates/web/base/template/src/components/shared/header.tsx +49 -30
  14. package/dist/templates/web/ui-auth/template/package.json +3 -3
  15. package/dist/templates/web/ui-auth/template/src/app/page.tsx +203 -61
  16. package/dist/templates/web/ui-auth-payments/template/package.json +3 -3
  17. package/dist/templates/web/ui-auth-payments/template/src/app/checkout/page.tsx +253 -87
  18. package/dist/templates/web/ui-auth-payments/template/src/app/globals.css +129 -0
  19. package/dist/templates/web/ui-auth-payments/template/src/app/page.tsx +246 -74
  20. package/dist/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +106 -40
  21. package/dist/templates/web/ui-auth-payments-audio/template/package.json +3 -3
  22. package/dist/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +221 -82
  23. package/dist/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +132 -40
  24. package/dist/templates/web/ui-auth-payments-video/template/package.json +3 -3
  25. package/dist/templates/web/ui-auth-payments-video/template/src/app/globals.css +146 -0
  26. package/dist/templates/web/ui-auth-payments-video/template/src/app/page.tsx +259 -85
  27. package/dist/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +133 -41
  28. package/dist/templates/web/ui-only/template/package.json +1 -1
  29. package/package.json +106 -106
  30. package/src/templates/mobile/base/template/App.tsx +113 -23
  31. package/src/templates/mobile/base/template/package.json +41 -38
  32. package/src/templates/web/base/template/package.json +2 -2
  33. package/src/templates/web/base/template/src/app/checkout/page.tsx +99 -8
  34. package/src/templates/web/base/template/src/app/dashboard/page.tsx +309 -0
  35. package/src/templates/web/base/template/src/app/globals.css +97 -0
  36. package/src/templates/web/base/template/src/app/login/page.tsx +36 -8
  37. package/src/templates/web/base/template/src/app/page.tsx +123 -83
  38. package/src/templates/web/base/template/src/app/signup/page.tsx +36 -8
  39. package/src/templates/web/base/template/src/components/shared/header.tsx +49 -30
  40. package/src/templates/web/ui-auth/template/package.json +3 -3
  41. package/src/templates/web/ui-auth/template/src/app/page.tsx +203 -61
  42. package/src/templates/web/ui-auth-payments/template/package.json +3 -3
  43. package/src/templates/web/ui-auth-payments/template/src/app/checkout/page.tsx +253 -87
  44. package/src/templates/web/ui-auth-payments/template/src/app/globals.css +129 -0
  45. package/src/templates/web/ui-auth-payments/template/src/app/page.tsx +246 -74
  46. package/src/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +106 -40
  47. package/src/templates/web/ui-auth-payments-audio/template/package.json +3 -3
  48. package/src/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +221 -82
  49. package/src/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +132 -40
  50. package/src/templates/web/ui-auth-payments-video/template/package.json +3 -3
  51. package/src/templates/web/ui-auth-payments-video/template/src/app/globals.css +146 -0
  52. package/src/templates/web/ui-auth-payments-video/template/src/app/page.tsx +259 -85
  53. package/src/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +133 -41
  54. package/src/templates/web/ui-only/template/package.json +1 -1
  55. package/dist/index.js +0 -1173
  56. package/dist/index.js.map +0 -1
@@ -40,3 +40,149 @@
40
40
  @apply bg-background text-foreground;
41
41
  }
42
42
  }
43
+
44
+ /* Mobile-first optimizations */
45
+ @media (max-width: 768px) {
46
+ .mobile-optimized {
47
+ touch-action: manipulation;
48
+ -webkit-tap-highlight-color: transparent;
49
+ }
50
+
51
+ /* Better touch targets */
52
+ button,
53
+ a,
54
+ input,
55
+ select,
56
+ textarea {
57
+ min-height: 44px;
58
+ min-width: 44px;
59
+ }
60
+
61
+ /* Smooth scrolling for mobile */
62
+ html {
63
+ scroll-behavior: smooth;
64
+ -webkit-overflow-scrolling: touch;
65
+ }
66
+ }
67
+
68
+ /* Animated moving banner */
69
+ @keyframes marquee {
70
+ 0% {
71
+ transform: translate3d(100%, 0, 0);
72
+ }
73
+ 100% {
74
+ transform: translate3d(-100%, 0, 0);
75
+ }
76
+ }
77
+
78
+ .animate-marquee {
79
+ animation: marquee 15s linear infinite;
80
+ }
81
+
82
+ /* Network-aware styles */
83
+ @media (prefers-reduced-data: reduce) {
84
+ .high-bandwidth-content {
85
+ display: none;
86
+ }
87
+ }
88
+
89
+ /* Reduced motion preferences */
90
+ @media (prefers-reduced-motion: reduce) {
91
+ *,
92
+ *::before,
93
+ *::after {
94
+ animation-duration: 0.01ms !important;
95
+ animation-iteration-count: 1 !important;
96
+ transition-duration: 0.01ms !important;
97
+ }
98
+
99
+ .animate-marquee {
100
+ animation: none;
101
+ }
102
+ }
103
+
104
+ /* Hamburger menu animations */
105
+ .hamburger-line {
106
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
107
+ transform-origin: center;
108
+ }
109
+
110
+ .hamburger-open .hamburger-line:nth-child(1) {
111
+ transform: rotate(45deg) translate(6px, 6px);
112
+ }
113
+
114
+ .hamburger-open .hamburger-line:nth-child(2) {
115
+ opacity: 0;
116
+ }
117
+
118
+ .hamburger-open .hamburger-line:nth-child(3) {
119
+ transform: rotate(-45deg) translate(6px, -6px);
120
+ }
121
+
122
+ /* Custom animations for mobile interactions */
123
+ @keyframes haptic-feedback {
124
+ 0% { transform: scale(1); }
125
+ 50% { transform: scale(0.95); }
126
+ 100% { transform: scale(1); }
127
+ }
128
+
129
+ .haptic-feedback {
130
+ animation: haptic-feedback 0.1s ease-in-out;
131
+ }
132
+
133
+ /* Video-specific optimizations */
134
+ .video-container {
135
+ position: relative;
136
+ width: 100%;
137
+ padding-bottom: 56.25%; /* 16:9 aspect ratio */
138
+ }
139
+
140
+ .video-player {
141
+ position: absolute;
142
+ top: 0;
143
+ left: 0;
144
+ width: 100%;
145
+ height: 100%;
146
+ border-radius: var(--radius);
147
+ overflow: hidden;
148
+ }
149
+
150
+ /* Offline indicator styles */
151
+ .offline-indicator {
152
+ position: fixed;
153
+ top: 0;
154
+ left: 0;
155
+ right: 0;
156
+ background: #f59e0b;
157
+ color: white;
158
+ text-align: center;
159
+ padding: 8px;
160
+ font-size: 14px;
161
+ z-index: 9999;
162
+ }
163
+
164
+ /* Loading states */
165
+ .loading-skeleton {
166
+ background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
167
+ background-size: 200% 100%;
168
+ animation: loading 1.5s infinite;
169
+ }
170
+
171
+ @keyframes loading {
172
+ 0% {
173
+ background-position: 200% 0;
174
+ }
175
+ 100% {
176
+ background-position: -200% 0;
177
+ }
178
+ }
179
+
180
+ /* Progressive image loading */
181
+ .progressive-image {
182
+ filter: blur(5px);
183
+ transition: filter 0.3s;
184
+ }
185
+
186
+ .progressive-image.loaded {
187
+ filter: blur(0);
188
+ }
@@ -1,12 +1,31 @@
1
1
  'use client'
2
2
 
3
- import { Button, Card, VideoPlayer } from '@digilogiclabs/saas-factory-ui'
4
- import { ArrowRight, Zap, Shield, Rocket, CheckCircle, LogOut, User, Video } from 'lucide-react'
3
+ import {
4
+ Button,
5
+ Card,
6
+ VideoPlayer,
7
+ PageTransition,
8
+ MobileContainer,
9
+ MobileHero,
10
+ ResponsiveGrid,
11
+ NetworkAwareContent,
12
+ OfflineWrapper,
13
+ SwipeableCard,
14
+ PullToRefresh,
15
+ ProgressiveImage,
16
+ useNetworkInfo,
17
+ useOfflineState
18
+ } from '@digilogiclabs/saas-factory-ui'
19
+ import { ArrowRight, Zap, Shield, Rocket, CheckCircle, LogOut, User, Video, Wifi, WifiOff, Play, Pause } from 'lucide-react'
5
20
  import { useAuth } from '@digilogiclabs/saas-factory-auth'
6
21
  import Link from 'next/link'
22
+ import { useState } from 'react'
7
23
 
8
24
  export default function Home() {
9
25
  const { user, signOut, loading } = useAuth()
26
+ const networkInfo = useNetworkInfo()
27
+ const isOnline = useOfflineState()
28
+ const [isRefreshing, setIsRefreshing] = useState(false)
10
29
 
11
30
  const handleSignOut = async () => {
12
31
  try {
@@ -16,9 +35,29 @@ export default function Home() {
16
35
  }
17
36
  }
18
37
 
38
+ const handleRefresh = async () => {
39
+ setIsRefreshing(true)
40
+ // Simulate refresh
41
+ await new Promise(resolve => setTimeout(resolve, 1500))
42
+ setIsRefreshing(false)
43
+ }
44
+
19
45
  return (
20
- <main className="min-h-screen bg-gradient-to-br from-blue-50 to-indigo-100 dark:from-gray-900 dark:to-gray-800">
21
- <div className="container mx-auto px-4 py-16">
46
+ <PageTransition type="slide" direction="up" duration={300}>
47
+ <OfflineWrapper
48
+ cacheStrategy="cache-first"
49
+ showOfflineIndicator={true}
50
+ backgroundSync={true}
51
+ >
52
+ <PullToRefresh
53
+ onRefresh={handleRefresh}
54
+ threshold={80}
55
+ loadingIndicator="spinner"
56
+ hapticOnTrigger={true}
57
+ networkAware={true}
58
+ >
59
+ <main className="min-h-screen bg-gradient-to-br from-blue-50 to-indigo-100 dark:from-gray-900 dark:to-gray-800">
60
+ <MobileContainer className="py-16">
22
61
  {/* Auth Status Bar */}
23
62
  <div className="flex justify-end mb-8">
24
63
  {loading ? (
@@ -46,85 +85,217 @@ export default function Home() {
46
85
  )}
47
86
  </div>
48
87
 
49
- {/* Hero Section */}
50
- <div className="text-center mb-16">
51
- <div className="inline-flex items-center px-4 py-2 rounded-full text-sm font-medium bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200 mb-6">
52
- <CheckCircle className="w-4 h-4 mr-2" />
53
- Video Player App - UI Package v0.11.1 + Auth v1.0.0 + Payments Integrated Successfully
54
- </div>
55
- <h1 className="text-4xl md:text-6xl font-bold text-gray-900 dark:text-white mb-6">
56
- Welcome to{' '}
57
- <span className="text-blue-600 dark:text-blue-400">{{titleCaseName}}</span>
58
- </h1>
59
- <p className="text-xl text-gray-600 dark:text-gray-300 mb-8 max-w-2xl mx-auto">
60
- {{description}}. This video streaming app template uses SaaS Factory UI package v0.11.1 with video player components, authentication v1.0.0 and payments integration.
61
- </p>
62
- <div className="flex flex-col sm:flex-row gap-4 justify-center">
63
- <Link href="/checkout">
64
- <Button size="lg" className="text-lg px-8">
65
- View Pricing
66
- <ArrowRight className="ml-2 h-5 w-5" />
67
- </Button>
68
- </Link>
69
- <Button variant="outline" size="lg" className="text-lg px-8">
70
- Learn More
71
- </Button>
88
+ {/* Hero Section with Network Status */}
89
+ <div className="flex flex-col sm:flex-row justify-between items-center mb-8 gap-4">
90
+ <div className="flex items-center gap-2 text-sm">
91
+ {isOnline ? (
92
+ <div className="flex items-center gap-2 text-green-600">
93
+ <Wifi className="w-4 h-4" />
94
+ <span>Online</span>
95
+ {networkInfo?.effectiveType && (
96
+ <span className="bg-green-100 text-green-800 px-2 py-1 rounded text-xs">
97
+ {networkInfo.effectiveType.toUpperCase()}
98
+ </span>
99
+ )}
100
+ </div>
101
+ ) : (
102
+ <div className="flex items-center gap-2 text-red-600">
103
+ <WifiOff className="w-4 h-4" />
104
+ <span>Offline - Cached videos available</span>
105
+ </div>
106
+ )}
72
107
  </div>
73
108
  </div>
74
109
 
110
+ <MobileHero
111
+ badge={{
112
+ text: "Video Player App - UI Package v0.13.0 + Auth v1.0.0 + Payments Integrated Successfully",
113
+ variant: "secondary",
114
+ icon: CheckCircle
115
+ }}
116
+ title={{
117
+ text: "Welcome to {{titleCaseName}}",
118
+ highlight: "{{titleCaseName}}",
119
+ size: "xl"
120
+ }}
121
+ description="{{description}}. This mobile-first video streaming app template uses SaaS Factory UI package v0.13.0 with touch-optimized video player components, authentication v1.0.0 and payments integration."
122
+ actions={[
123
+ {
124
+ label: "Start Watching",
125
+ href: "/checkout",
126
+ icon: Play,
127
+ variant: "default",
128
+ size: "lg"
129
+ },
130
+ {
131
+ label: "Learn More",
132
+ variant: "outline",
133
+ size: "lg"
134
+ }
135
+ ]}
136
+ className="text-center mb-16"
137
+ />
138
+
75
139
  {/* Video Player Showcase */}
76
- <div className="max-w-4xl mx-auto mb-16">
77
- <Card className="p-8">
78
- <div className="text-center mb-8">
79
- <div className="mx-auto w-16 h-16 bg-red-100 dark:bg-red-900 rounded-full flex items-center justify-center mb-4">
80
- <Video className="h-8 w-8 text-red-600 dark:text-red-400" />
81
- </div>
82
- <h2 className="text-3xl font-bold mb-4">Video Player Component</h2>
83
- <p className="text-gray-600 dark:text-gray-300">
84
- Experience our feature-rich video player with playlist support, quality selection, fullscreen mode, and cross-platform compatibility
85
- </p>
140
+ <NetworkAwareContent
141
+ showOnSlow={
142
+ <div className="max-w-4xl mx-auto mb-16">
143
+ <Card className="p-6">
144
+ <div className="text-center mb-6">
145
+ <div className="mx-auto w-12 h-12 bg-red-100 dark:bg-red-900 rounded-full flex items-center justify-center mb-4">
146
+ <Video className="h-6 w-6 text-red-600 dark:text-red-400" />
147
+ </div>
148
+ <h2 className="text-xl font-bold mb-2">Mobile Video Player</h2>
149
+ <p className="text-sm text-gray-600 dark:text-gray-300">
150
+ Optimized for slower connections - automatically serves lower quality
151
+ </p>
152
+ </div>
153
+ <VideoPlayer
154
+ playlist={[
155
+ {
156
+ id: '1',
157
+ title: 'Sample Video Content',
158
+ description: 'Demo video optimized for mobile',
159
+ duration: 300,
160
+ url: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4',
161
+ thumbnail: 'https://via.placeholder.com/320x180?text=Video+1',
162
+ qualities: [
163
+ { label: '360p', url: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4' }
164
+ ]
165
+ }
166
+ ]}
167
+ mobileOptimized={true}
168
+ touchFriendly={true}
169
+ autoQuality="low"
170
+ className="max-w-lg mx-auto"
171
+ />
172
+ </Card>
86
173
  </div>
87
- <VideoPlayer
88
- playlist={[
89
- {
90
- id: '1',
91
- title: 'Sample Video Content',
92
- description: 'Demo video showcasing the video player functionality',
93
- duration: 300,
94
- url: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4',
95
- thumbnail: 'https://via.placeholder.com/640x360?text=Video+1',
96
- qualities: [
97
- { label: '480p', url: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4' },
98
- { label: '720p', url: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4' }
99
- ]
100
- },
101
- {
102
- id: '2',
103
- title: 'Another Great Video',
104
- description: 'Another sample video for the playlist',
105
- duration: 240,
106
- url: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4',
107
- thumbnail: 'https://via.placeholder.com/640x360?text=Video+2',
108
- qualities: [
109
- { label: '480p', url: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4' },
110
- { label: '720p', url: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4' }
111
- ]
112
- }
113
- ]}
114
- className="max-w-4xl mx-auto"
115
- />
116
- </Card>
117
- </div>
174
+ }
175
+ showOnOffline={
176
+ <div className="max-w-4xl mx-auto mb-16">
177
+ <Card className="p-6 bg-yellow-50 border-yellow-200">
178
+ <div className="text-center">
179
+ <WifiOff className="mx-auto w-12 h-12 text-yellow-600 mb-4" />
180
+ <h2 className="text-xl font-bold mb-2">Offline Mode</h2>
181
+ <p className="text-gray-600">Videos are cached for offline viewing when connection is restored.</p>
182
+ </div>
183
+ </Card>
184
+ </div>
185
+ }
186
+ >
187
+ <SwipeableCard
188
+ leftActions={[
189
+ {
190
+ id: 'previous',
191
+ label: 'Previous',
192
+ onAction: () => console.log('Previous video'),
193
+ color: 'blue',
194
+ icon: ArrowRight
195
+ },
196
+ {
197
+ id: 'quality',
198
+ label: 'Quality',
199
+ onAction: () => console.log('Toggle quality'),
200
+ color: 'purple'
201
+ }
202
+ ]}
203
+ rightActions={[
204
+ {
205
+ id: 'next',
206
+ label: 'Next',
207
+ onAction: () => console.log('Next video'),
208
+ color: 'green',
209
+ icon: ArrowRight
210
+ },
211
+ {
212
+ id: 'fullscreen',
213
+ label: 'Fullscreen',
214
+ onAction: () => console.log('Toggle fullscreen'),
215
+ color: 'orange'
216
+ }
217
+ ]}
218
+ threshold={60}
219
+ hapticFeedback={true}
220
+ showActionLabels={true}
221
+ className="max-w-4xl mx-auto mb-16"
222
+ >
223
+ <Card className="p-8">
224
+ <div className="text-center mb-8">
225
+ <div className="mx-auto w-16 h-16 bg-red-100 dark:bg-red-900 rounded-full flex items-center justify-center mb-4">
226
+ <Video className="h-8 w-8 text-red-600 dark:text-red-400" />
227
+ </div>
228
+ <h2 className="text-3xl font-bold mb-4">Touch-Optimized Video Player</h2>
229
+ <p className="text-gray-600 dark:text-gray-300 mb-2">
230
+ Experience our mobile-first video player with gesture controls, adaptive quality, and offline caching
231
+ </p>
232
+ <p className="text-sm text-gray-500">
233
+ Swipe for controls • Double tap for fullscreen • Pull to refresh playlist
234
+ </p>
235
+ </div>
236
+ <VideoPlayer
237
+ playlist={[
238
+ {
239
+ id: '1',
240
+ title: 'Sample Video Content',
241
+ description: 'Demo video showcasing mobile video player functionality',
242
+ duration: 300,
243
+ url: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4',
244
+ thumbnail: 'https://via.placeholder.com/640x360?text=Video+1',
245
+ qualities: [
246
+ { label: '360p', url: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4' },
247
+ { label: '480p', url: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4' },
248
+ { label: '720p', url: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4' }
249
+ ]
250
+ },
251
+ {
252
+ id: '2',
253
+ title: 'Another Great Video',
254
+ description: 'Mobile-optimized video streaming experience',
255
+ duration: 240,
256
+ url: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4',
257
+ thumbnail: 'https://via.placeholder.com/640x360?text=Video+2',
258
+ qualities: [
259
+ { label: '360p', url: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4' },
260
+ { label: '480p', url: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4' },
261
+ { label: '720p', url: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4' }
262
+ ]
263
+ },
264
+ {
265
+ id: '3',
266
+ title: 'Touch-Friendly Content',
267
+ description: 'Optimized for touch devices with gesture controls',
268
+ duration: 180,
269
+ url: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4',
270
+ thumbnail: 'https://via.placeholder.com/640x360?text=Video+3',
271
+ qualities: [
272
+ { label: '360p', url: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4' },
273
+ { label: '720p', url: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4' }
274
+ ]
275
+ }
276
+ ]}
277
+ mobileOptimized={true}
278
+ touchFriendly={true}
279
+ hapticFeedback={true}
280
+ gestureControls={true}
281
+ networkAware={true}
282
+ offlineSupport={true}
283
+ autoQuality="adaptive"
284
+ className="max-w-4xl mx-auto"
285
+ />
286
+ </Card>
287
+ </SwipeableCard>
288
+ </NetworkAwareContent>
118
289
 
119
290
  {/* Component Showcase */}
120
- <div className="grid md:grid-cols-4 gap-8 mb-16">
291
+ <ResponsiveGrid columns={{ base: 1, sm: 2, md: 4 }} gap="lg" className="mb-16">
121
292
  <Card className="text-center p-6">
122
293
  <div className="mx-auto w-12 h-12 bg-blue-100 dark:bg-blue-900 rounded-lg flex items-center justify-center mb-4">
123
294
  <Zap className="h-6 w-6 text-blue-600 dark:text-blue-400" />
124
295
  </div>
125
- <h3 className="text-xl font-semibold mb-2">Video UI Components</h3>
126
- <p className="text-gray-600 dark:text-gray-300">
127
- Video Player, Button, and Card components from @digilogiclabs/saas-factory-ui v0.11.1
296
+ <h3 className="text-lg font-semibold mb-2">Mobile Video UI</h3>
297
+ <p className="text-sm text-gray-600 dark:text-gray-300">
298
+ Touch-optimized Video Player with gesture controls from @digilogiclabs/saas-factory-ui v0.13.0
128
299
  </p>
129
300
  </Card>
130
301
 
@@ -132,9 +303,9 @@ export default function Home() {
132
303
  <div className="mx-auto w-12 h-12 bg-green-100 dark:bg-green-900 rounded-lg flex items-center justify-center mb-4">
133
304
  <Shield className="h-6 w-6 text-green-600 dark:text-green-400" />
134
305
  </div>
135
- <h3 className="text-xl font-semibold mb-2">Authentication</h3>
136
- <p className="text-gray-600 dark:text-gray-300">
137
- Secure user authentication with @digilogiclabs/saas-factory-auth
306
+ <h3 className="text-lg font-semibold mb-2">Cross-Device Auth</h3>
307
+ <p className="text-sm text-gray-600 dark:text-gray-300">
308
+ Secure authentication across all devices with @digilogiclabs/saas-factory-auth v1.0.0
138
309
  </p>
139
310
  </Card>
140
311
 
@@ -142,9 +313,9 @@ export default function Home() {
142
313
  <div className="mx-auto w-12 h-12 bg-purple-100 dark:bg-purple-900 rounded-lg flex items-center justify-center mb-4">
143
314
  <Rocket className="h-6 w-6 text-purple-600 dark:text-purple-400" />
144
315
  </div>
145
- <h3 className="text-xl font-semibold mb-2">TypeScript Ready</h3>
146
- <p className="text-gray-600 dark:text-gray-300">
147
- Full type safety with enhanced component definitions
316
+ <h3 className="text-lg font-semibold mb-2">Performance First</h3>
317
+ <p className="text-sm text-gray-600 dark:text-gray-300">
318
+ Network-aware video streaming with adaptive quality and caching
148
319
  </p>
149
320
  </Card>
150
321
 
@@ -154,12 +325,12 @@ export default function Home() {
154
325
  <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" />
155
326
  </svg>
156
327
  </div>
157
- <h3 className="text-xl font-semibold mb-2">Payments Integration</h3>
158
- <p className="text-gray-600 dark:text-gray-300">
159
- Complete payment processing with @digilogiclabs/saas-factory-payments
328
+ <h3 className="text-lg font-semibold mb-2">Mobile Payments</h3>
329
+ <p className="text-sm text-gray-600 dark:text-gray-300">
330
+ Touch-optimized subscription flows with @digilogiclabs/saas-factory-payments v1.0.0
160
331
  </p>
161
332
  </Card>
162
- </div>
333
+ </ResponsiveGrid>
163
334
 
164
335
  {/* Button Variants Showcase */}
165
336
  <Card className="max-w-4xl mx-auto p-8">
@@ -177,11 +348,14 @@ export default function Home() {
177
348
  </div>
178
349
  <div className="text-center">
179
350
  <p className="text-sm text-gray-500">
180
- All components from @digilogiclabs/saas-factory-ui v0.11.1 + auth v1.0.0 + payments
351
+ All mobile-optimized components from @digilogiclabs/saas-factory-ui v0.13.0 + auth v1.0.0 + payments
181
352
  </p>
182
353
  </div>
183
354
  </Card>
184
- </div>
185
- </main>
355
+ </MobileContainer>
356
+ </main>
357
+ </PullToRefresh>
358
+ </OfflineWrapper>
359
+ </PageTransition>
186
360
  )
187
361
  }