@digilogiclabs/create-saas-app 2.8.0 → 2.9.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 (94) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/generators/template-generator.js +8 -8
  3. package/dist/generators/template-generator.js.map +1 -1
  4. package/dist/templates/shared/quality/web/src/__tests__/accessibility.test.tsx +3 -3
  5. package/dist/templates/web/ai-platform/template/src/app/page.tsx +207 -207
  6. package/dist/templates/web/base/template/package.json +1 -3
  7. package/dist/templates/web/base/template/src/app/auth/callback/route.ts +32 -18
  8. package/dist/templates/web/base/template/src/app/dashboard/page.tsx +6 -43
  9. package/dist/templates/web/base/template/src/app/globals.css +158 -157
  10. package/dist/templates/web/base/template/src/app/page.tsx +2 -2
  11. package/dist/templates/web/ui-auth/template/src/app/dev-setup/page.tsx +800 -800
  12. package/dist/templates/web/ui-auth/template/src/app/globals.css +96 -95
  13. package/dist/templates/web/ui-auth/template/src/app/login/page.tsx +109 -109
  14. package/dist/templates/web/ui-auth/template/src/app/page.tsx +4 -3
  15. package/dist/templates/web/ui-auth/template/src/app/signup/page.tsx +128 -128
  16. package/dist/templates/web/ui-auth-ai/template/src/app/globals.css +35 -40
  17. package/dist/templates/web/ui-auth-ai/template/src/app/layout.tsx +1 -0
  18. package/dist/templates/web/ui-auth-payments/template/src/app/checkout/page.tsx +3 -3
  19. package/dist/templates/web/ui-auth-payments/template/src/app/dashboard/page.tsx +10 -49
  20. package/dist/templates/web/ui-auth-payments/template/src/app/dev-setup/page.tsx +800 -800
  21. package/dist/templates/web/ui-auth-payments/template/src/app/globals.css +212 -211
  22. package/dist/templates/web/ui-auth-payments/template/src/app/login/page.tsx +109 -109
  23. package/dist/templates/web/ui-auth-payments/template/src/app/page.tsx +350 -350
  24. package/dist/templates/web/ui-auth-payments/template/src/app/setup/page.tsx +506 -506
  25. package/dist/templates/web/ui-auth-payments/template/src/app/signup/page.tsx +128 -128
  26. package/dist/templates/web/ui-auth-payments/template/src/components/client/login-form.tsx +143 -143
  27. package/dist/templates/web/ui-auth-payments/template/src/components/client/signup-form.tsx +184 -184
  28. package/dist/templates/web/ui-auth-payments-ai/template/src/app/billing/page.tsx +143 -233
  29. package/dist/templates/web/ui-auth-payments-ai/template/src/app/dashboard/page.tsx +10 -50
  30. package/dist/templates/web/ui-auth-payments-ai/template/src/app/dev-setup/page.tsx +800 -800
  31. package/dist/templates/web/ui-auth-payments-ai/template/src/app/globals.css +97 -96
  32. package/dist/templates/web/ui-auth-payments-ai/template/src/app/onboarding/page.tsx +325 -364
  33. package/dist/templates/web/ui-auth-payments-ai/template/src/app/page.tsx +1 -1
  34. package/dist/templates/web/ui-auth-payments-ai/template/src/app/settings/page.tsx +389 -532
  35. package/dist/templates/web/ui-auth-payments-ai/template/src/app/setup/page.tsx +644 -644
  36. package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/login-form.tsx +119 -163
  37. package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/signup-form.tsx +158 -201
  38. package/dist/templates/web/ui-auth-payments-ai-rag/template/package.json +1 -2
  39. package/dist/templates/web/ui-auth-payments-audio/template/src/app/dashboard/page.tsx +10 -51
  40. package/dist/templates/web/ui-auth-payments-audio/template/src/app/globals.css +97 -96
  41. package/dist/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +402 -403
  42. package/dist/templates/web/ui-auth-payments-audio/template/src/components/client/login-form.tsx +143 -143
  43. package/dist/templates/web/ui-auth-payments-audio/template/src/components/client/signup-form.tsx +184 -184
  44. package/dist/templates/web/ui-auth-payments-video/template/src/app/globals.css +229 -228
  45. package/dist/templates/web/ui-auth-payments-video/template/src/app/login/page.tsx +1 -1
  46. package/dist/templates/web/ui-auth-payments-video/template/src/app/page.tsx +4 -7
  47. package/dist/templates/web/ui-auth-payments-video/template/src/app/signup/page.tsx +1 -1
  48. package/dist/templates/web/ui-only/template/src/app/globals.css +43 -42
  49. package/package.json +1 -1
  50. package/src/templates/shared/quality/web/src/__tests__/accessibility.test.tsx +3 -3
  51. package/src/templates/web/ai-platform/template/src/app/page.tsx +207 -207
  52. package/src/templates/web/base/template/package.json +1 -3
  53. package/src/templates/web/base/template/src/app/auth/callback/route.ts +32 -18
  54. package/src/templates/web/base/template/src/app/dashboard/page.tsx +6 -43
  55. package/src/templates/web/base/template/src/app/globals.css +158 -157
  56. package/src/templates/web/base/template/src/app/page.tsx +2 -2
  57. package/src/templates/web/ui-auth/template/src/app/dev-setup/page.tsx +800 -800
  58. package/src/templates/web/ui-auth/template/src/app/globals.css +96 -95
  59. package/src/templates/web/ui-auth/template/src/app/login/page.tsx +109 -109
  60. package/src/templates/web/ui-auth/template/src/app/page.tsx +4 -3
  61. package/src/templates/web/ui-auth/template/src/app/signup/page.tsx +128 -128
  62. package/src/templates/web/ui-auth-ai/template/src/app/globals.css +35 -40
  63. package/src/templates/web/ui-auth-ai/template/src/app/layout.tsx +1 -0
  64. package/src/templates/web/ui-auth-payments/template/src/app/checkout/page.tsx +3 -3
  65. package/src/templates/web/ui-auth-payments/template/src/app/dashboard/page.tsx +10 -49
  66. package/src/templates/web/ui-auth-payments/template/src/app/dev-setup/page.tsx +800 -800
  67. package/src/templates/web/ui-auth-payments/template/src/app/globals.css +212 -211
  68. package/src/templates/web/ui-auth-payments/template/src/app/login/page.tsx +109 -109
  69. package/src/templates/web/ui-auth-payments/template/src/app/page.tsx +350 -350
  70. package/src/templates/web/ui-auth-payments/template/src/app/setup/page.tsx +506 -506
  71. package/src/templates/web/ui-auth-payments/template/src/app/signup/page.tsx +128 -128
  72. package/src/templates/web/ui-auth-payments/template/src/components/client/login-form.tsx +143 -143
  73. package/src/templates/web/ui-auth-payments/template/src/components/client/signup-form.tsx +184 -184
  74. package/src/templates/web/ui-auth-payments-ai/template/src/app/billing/page.tsx +143 -233
  75. package/src/templates/web/ui-auth-payments-ai/template/src/app/dashboard/page.tsx +10 -50
  76. package/src/templates/web/ui-auth-payments-ai/template/src/app/dev-setup/page.tsx +800 -800
  77. package/src/templates/web/ui-auth-payments-ai/template/src/app/globals.css +97 -96
  78. package/src/templates/web/ui-auth-payments-ai/template/src/app/onboarding/page.tsx +325 -364
  79. package/src/templates/web/ui-auth-payments-ai/template/src/app/page.tsx +1 -1
  80. package/src/templates/web/ui-auth-payments-ai/template/src/app/settings/page.tsx +389 -532
  81. package/src/templates/web/ui-auth-payments-ai/template/src/app/setup/page.tsx +644 -644
  82. package/src/templates/web/ui-auth-payments-ai/template/src/components/client/login-form.tsx +119 -163
  83. package/src/templates/web/ui-auth-payments-ai/template/src/components/client/signup-form.tsx +158 -201
  84. package/src/templates/web/ui-auth-payments-ai-rag/template/package.json +1 -2
  85. package/src/templates/web/ui-auth-payments-audio/template/src/app/dashboard/page.tsx +10 -51
  86. package/src/templates/web/ui-auth-payments-audio/template/src/app/globals.css +97 -96
  87. package/src/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +402 -403
  88. package/src/templates/web/ui-auth-payments-audio/template/src/components/client/login-form.tsx +143 -143
  89. package/src/templates/web/ui-auth-payments-audio/template/src/components/client/signup-form.tsx +184 -184
  90. package/src/templates/web/ui-auth-payments-video/template/src/app/globals.css +229 -228
  91. package/src/templates/web/ui-auth-payments-video/template/src/app/login/page.tsx +1 -1
  92. package/src/templates/web/ui-auth-payments-video/template/src/app/page.tsx +4 -7
  93. package/src/templates/web/ui-auth-payments-video/template/src/app/signup/page.tsx +1 -1
  94. package/src/templates/web/ui-only/template/src/app/globals.css +43 -42
@@ -1,228 +1,229 @@
1
- @tailwind base;
2
- @tailwind components;
3
- @tailwind utilities;
4
-
5
- /* Import SaaS Factory UI styles */
6
- @import '@digilogiclabs/saas-factory-ui/dist/index.css';
7
-
8
- @layer base {
9
- :root {
10
- --background: 0 0% 100%;
11
- --foreground: 222.2 84% 4.9%;
12
- --card: 0 0% 100%;
13
- --card-foreground: 222.2 84% 4.9%;
14
- --primary: 221.2 83.2% 53.3%;
15
- --primary-foreground: 210 40% 98%;
16
- --secondary: 210 40% 96%;
17
- --secondary-foreground: 222.2 84% 4.9%;
18
- --border: 214.3 31.8% 91.4%;
19
- --radius: 0.5rem;
20
- }
21
-
22
- .dark {
23
- --background: 222.2 84% 4.9%;
24
- --foreground: 210 40% 98%;
25
- --card: 222.2 84% 4.9%;
26
- --card-foreground: 210 40% 98%;
27
- --primary: 217.2 91.2% 59.8%;
28
- --primary-foreground: 222.2 84% 4.9%;
29
- --secondary: 217.2 32.6% 17.5%;
30
- --secondary-foreground: 210 40% 98%;
31
- --border: 217.2 32.6% 17.5%;
32
- }
33
- }
34
-
35
- @layer base {
36
- * {
37
- @apply border-border;
38
- }
39
- body {
40
- @apply bg-background text-foreground;
41
- }
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
- }
189
-
190
- /* Additional custom animations for enhanced visual effects */
191
- @keyframes slide-down {
192
- from {
193
- opacity: 0;
194
- transform: translateY(-10px);
195
- }
196
- to {
197
- opacity: 1;
198
- transform: translateY(0);
199
- }
200
- }
201
-
202
- @keyframes fade-in-up {
203
- from {
204
- opacity: 0;
205
- transform: translateY(10px);
206
- }
207
- to {
208
- opacity: 1;
209
- transform: translateY(0);
210
- }
211
- }
212
-
213
- .animate-slide-down {
214
- animation: slide-down 0.6s ease-out;
215
- }
216
-
217
- .animate-fade-in-up {
218
- animation: fade-in-up 0.6s ease-out;
219
- animation-fill-mode: both;
220
- }
221
-
222
- .animation-delay-2000 {
223
- animation-delay: 2s;
224
- }
225
-
226
- .animation-delay-4000 {
227
- animation-delay: 4s;
228
- }
1
+ /* Import SaaS Factory UI styles */
2
+ @import '@digilogiclabs/saas-factory-ui/dist/index.css';
3
+
4
+ @tailwind base;
5
+ @tailwind components;
6
+ @tailwind utilities;
7
+
8
+
9
+ @layer base {
10
+ :root {
11
+ --background: 0 0% 100%;
12
+ --foreground: 222.2 84% 4.9%;
13
+ --card: 0 0% 100%;
14
+ --card-foreground: 222.2 84% 4.9%;
15
+ --primary: 221.2 83.2% 53.3%;
16
+ --primary-foreground: 210 40% 98%;
17
+ --secondary: 210 40% 96%;
18
+ --secondary-foreground: 222.2 84% 4.9%;
19
+ --border: 214.3 31.8% 91.4%;
20
+ --radius: 0.5rem;
21
+ }
22
+
23
+ .dark {
24
+ --background: 222.2 84% 4.9%;
25
+ --foreground: 210 40% 98%;
26
+ --card: 222.2 84% 4.9%;
27
+ --card-foreground: 210 40% 98%;
28
+ --primary: 217.2 91.2% 59.8%;
29
+ --primary-foreground: 222.2 84% 4.9%;
30
+ --secondary: 217.2 32.6% 17.5%;
31
+ --secondary-foreground: 210 40% 98%;
32
+ --border: 217.2 32.6% 17.5%;
33
+ }
34
+ }
35
+
36
+ @layer base {
37
+ * {
38
+ @apply border-border;
39
+ }
40
+ body {
41
+ @apply bg-background text-foreground;
42
+ }
43
+ }
44
+
45
+ /* Mobile-first optimizations */
46
+ @media (max-width: 768px) {
47
+ .mobile-optimized {
48
+ touch-action: manipulation;
49
+ -webkit-tap-highlight-color: transparent;
50
+ }
51
+
52
+ /* Better touch targets */
53
+ button,
54
+ a,
55
+ input,
56
+ select,
57
+ textarea {
58
+ min-height: 44px;
59
+ min-width: 44px;
60
+ }
61
+
62
+ /* Smooth scrolling for mobile */
63
+ html {
64
+ scroll-behavior: smooth;
65
+ -webkit-overflow-scrolling: touch;
66
+ }
67
+ }
68
+
69
+ /* Animated moving banner */
70
+ @keyframes marquee {
71
+ 0% {
72
+ transform: translate3d(100%, 0, 0);
73
+ }
74
+ 100% {
75
+ transform: translate3d(-100%, 0, 0);
76
+ }
77
+ }
78
+
79
+ .animate-marquee {
80
+ animation: marquee 15s linear infinite;
81
+ }
82
+
83
+ /* Network-aware styles */
84
+ @media (prefers-reduced-data: reduce) {
85
+ .high-bandwidth-content {
86
+ display: none;
87
+ }
88
+ }
89
+
90
+ /* Reduced motion preferences */
91
+ @media (prefers-reduced-motion: reduce) {
92
+ *,
93
+ *::before,
94
+ *::after {
95
+ animation-duration: 0.01ms !important;
96
+ animation-iteration-count: 1 !important;
97
+ transition-duration: 0.01ms !important;
98
+ }
99
+
100
+ .animate-marquee {
101
+ animation: none;
102
+ }
103
+ }
104
+
105
+ /* Hamburger menu animations */
106
+ .hamburger-line {
107
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
108
+ transform-origin: center;
109
+ }
110
+
111
+ .hamburger-open .hamburger-line:nth-child(1) {
112
+ transform: rotate(45deg) translate(6px, 6px);
113
+ }
114
+
115
+ .hamburger-open .hamburger-line:nth-child(2) {
116
+ opacity: 0;
117
+ }
118
+
119
+ .hamburger-open .hamburger-line:nth-child(3) {
120
+ transform: rotate(-45deg) translate(6px, -6px);
121
+ }
122
+
123
+ /* Custom animations for mobile interactions */
124
+ @keyframes haptic-feedback {
125
+ 0% { transform: scale(1); }
126
+ 50% { transform: scale(0.95); }
127
+ 100% { transform: scale(1); }
128
+ }
129
+
130
+ .haptic-feedback {
131
+ animation: haptic-feedback 0.1s ease-in-out;
132
+ }
133
+
134
+ /* Video-specific optimizations */
135
+ .video-container {
136
+ position: relative;
137
+ width: 100%;
138
+ padding-bottom: 56.25%; /* 16:9 aspect ratio */
139
+ }
140
+
141
+ .video-player {
142
+ position: absolute;
143
+ top: 0;
144
+ left: 0;
145
+ width: 100%;
146
+ height: 100%;
147
+ border-radius: var(--radius);
148
+ overflow: hidden;
149
+ }
150
+
151
+ /* Offline indicator styles */
152
+ .offline-indicator {
153
+ position: fixed;
154
+ top: 0;
155
+ left: 0;
156
+ right: 0;
157
+ background: #f59e0b;
158
+ color: white;
159
+ text-align: center;
160
+ padding: 8px;
161
+ font-size: 14px;
162
+ z-index: 9999;
163
+ }
164
+
165
+ /* Loading states */
166
+ .loading-skeleton {
167
+ background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
168
+ background-size: 200% 100%;
169
+ animation: loading 1.5s infinite;
170
+ }
171
+
172
+ @keyframes loading {
173
+ 0% {
174
+ background-position: 200% 0;
175
+ }
176
+ 100% {
177
+ background-position: -200% 0;
178
+ }
179
+ }
180
+
181
+ /* Progressive image loading */
182
+ .progressive-image {
183
+ filter: blur(5px);
184
+ transition: filter 0.3s;
185
+ }
186
+
187
+ .progressive-image.loaded {
188
+ filter: blur(0);
189
+ }
190
+
191
+ /* Additional custom animations for enhanced visual effects */
192
+ @keyframes slide-down {
193
+ from {
194
+ opacity: 0;
195
+ transform: translateY(-10px);
196
+ }
197
+ to {
198
+ opacity: 1;
199
+ transform: translateY(0);
200
+ }
201
+ }
202
+
203
+ @keyframes fade-in-up {
204
+ from {
205
+ opacity: 0;
206
+ transform: translateY(10px);
207
+ }
208
+ to {
209
+ opacity: 1;
210
+ transform: translateY(0);
211
+ }
212
+ }
213
+
214
+ .animate-slide-down {
215
+ animation: slide-down 0.6s ease-out;
216
+ }
217
+
218
+ .animate-fade-in-up {
219
+ animation: fade-in-up 0.6s ease-out;
220
+ animation-fill-mode: both;
221
+ }
222
+
223
+ .animation-delay-2000 {
224
+ animation-delay: 2s;
225
+ }
226
+
227
+ .animation-delay-4000 {
228
+ animation-delay: 4s;
229
+ }
@@ -30,7 +30,7 @@ export default function LoginPage() {
30
30
 
31
31
  const handleGoogleLogin = async () => {
32
32
  try {
33
- await signInWithOAuth('google', window.location.origin);
33
+ await signInWithOAuth('google');
34
34
  } catch (err) {
35
35
  console.error('Google login error:', err);
36
36
  }
@@ -46,7 +46,7 @@ export default function Home() {
46
46
  badge: {
47
47
  text: "🎥 Professional Video Platform",
48
48
  variant: "secondary" as const,
49
- icon: CheckCircle
49
+ icon: <CheckCircle className="w-4 h-4" />
50
50
  },
51
51
  title: {
52
52
  text: `Welcome to ${projectName}`,
@@ -73,11 +73,7 @@ export default function Home() {
73
73
 
74
74
  return (
75
75
  <PageTransition type="slide" direction="up" duration={300}>
76
- <OfflineWrapper
77
- cacheStrategy="cache-first"
78
- showOfflineIndicator={true}
79
- backgroundSync={true}
80
- >
76
+ <OfflineWrapper>
81
77
  <PullToRefresh
82
78
  onRefresh={handleRefresh}
83
79
  threshold={80}
@@ -322,7 +318,7 @@ export default function Home() {
322
318
  </NetworkAwareContent>
323
319
 
324
320
  {/* Component Showcase */}
325
- <ResponsiveGrid columns={gridConfig.columns_1_sm2_md4} gap="lg" className="mb-16">
321
+ <ResponsiveGrid columns={gridConfig.columns_1_sm2_md4} gap={6} className="mb-16">
326
322
  <Card className="text-center p-6">
327
323
  <div className="mx-auto w-12 h-12 bg-blue-100 dark:bg-blue-900 rounded-lg flex items-center justify-center mb-4">
328
324
  <Zap className="h-6 w-6 text-blue-600 dark:text-blue-400" />
@@ -387,6 +383,7 @@ export default function Home() {
387
383
  </div>
388
384
  </Card>
389
385
  </MobileContainer>
386
+ </div>
390
387
  </main>
391
388
  </PullToRefresh>
392
389
  </OfflineWrapper>
@@ -37,7 +37,7 @@ export default function SignupPage() {
37
37
 
38
38
  const handleGoogleSignup = async () => {
39
39
  try {
40
- await signInWithOAuth('google', window.location.origin);
40
+ await signInWithOAuth('google');
41
41
  } catch (err) {
42
42
  console.error('Google signup error:', err);
43
43
  }
@@ -1,42 +1,43 @@
1
- @tailwind base;
2
- @tailwind components;
3
- @tailwind utilities;
4
-
5
- /* Import SaaS Factory UI styles */
6
- @import '@digilogiclabs/saas-factory-ui/dist/index.css';
7
-
8
- @layer base {
9
- :root {
10
- --background: 0 0% 100%;
11
- --foreground: 222.2 84% 4.9%;
12
- --card: 0 0% 100%;
13
- --card-foreground: 222.2 84% 4.9%;
14
- --primary: 221.2 83.2% 53.3%;
15
- --primary-foreground: 210 40% 98%;
16
- --secondary: 210 40% 96%;
17
- --secondary-foreground: 222.2 84% 4.9%;
18
- --border: 214.3 31.8% 91.4%;
19
- --radius: 0.5rem;
20
- }
21
-
22
- .dark {
23
- --background: 222.2 84% 4.9%;
24
- --foreground: 210 40% 98%;
25
- --card: 222.2 84% 4.9%;
26
- --card-foreground: 210 40% 98%;
27
- --primary: 217.2 91.2% 59.8%;
28
- --primary-foreground: 222.2 84% 4.9%;
29
- --secondary: 217.2 32.6% 17.5%;
30
- --secondary-foreground: 210 40% 98%;
31
- --border: 217.2 32.6% 17.5%;
32
- }
33
- }
34
-
35
- @layer base {
36
- * {
37
- @apply border-border;
38
- }
39
- body {
40
- @apply bg-background text-foreground;
41
- }
42
- }
1
+ /* Import SaaS Factory UI styles */
2
+ @import '@digilogiclabs/saas-factory-ui/dist/index.css';
3
+
4
+ @tailwind base;
5
+ @tailwind components;
6
+ @tailwind utilities;
7
+
8
+
9
+ @layer base {
10
+ :root {
11
+ --background: 0 0% 100%;
12
+ --foreground: 222.2 84% 4.9%;
13
+ --card: 0 0% 100%;
14
+ --card-foreground: 222.2 84% 4.9%;
15
+ --primary: 221.2 83.2% 53.3%;
16
+ --primary-foreground: 210 40% 98%;
17
+ --secondary: 210 40% 96%;
18
+ --secondary-foreground: 222.2 84% 4.9%;
19
+ --border: 214.3 31.8% 91.4%;
20
+ --radius: 0.5rem;
21
+ }
22
+
23
+ .dark {
24
+ --background: 222.2 84% 4.9%;
25
+ --foreground: 210 40% 98%;
26
+ --card: 222.2 84% 4.9%;
27
+ --card-foreground: 210 40% 98%;
28
+ --primary: 217.2 91.2% 59.8%;
29
+ --primary-foreground: 222.2 84% 4.9%;
30
+ --secondary: 217.2 32.6% 17.5%;
31
+ --secondary-foreground: 210 40% 98%;
32
+ --border: 217.2 32.6% 17.5%;
33
+ }
34
+ }
35
+
36
+ @layer base {
37
+ * {
38
+ @apply border-border;
39
+ }
40
+ body {
41
+ @apply bg-background text-foreground;
42
+ }
43
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digilogiclabs/create-saas-app",
3
- "version": "2.8.0",
3
+ "version": "2.9.0",
4
4
  "description": "Create modern SaaS applications with DLL Platform - tier-aware scaffolding with platform-core and app-sdk",
5
5
  "main": "dist/cli/index.js",
6
6
  "bin": {
@@ -29,8 +29,8 @@ describe('Accessibility', () => {
29
29
  <main>
30
30
  <h1>Test Page</h1>
31
31
  <nav aria-label="Main navigation">
32
- <a href="/">Home</a>
33
- <a href="/about">About</a>
32
+ <a href="https://example.com/">Home</a>
33
+ <a href="https://example.com/about">About</a>
34
34
  </nav>
35
35
  <section aria-label="Content">
36
36
  <p>Test content</p>
@@ -118,7 +118,7 @@ describe('Accessibility', () => {
118
118
  <button style={{ minHeight: '44px', minWidth: '44px' }}>
119
119
  Click me
120
120
  </button>
121
- <a href="/" style={{ display: 'inline-block', minHeight: '44px', padding: '12px' }}>
121
+ <a href="https://example.com/" style={{ display: 'inline-block', minHeight: '44px', padding: '12px' }}>
122
122
  Link
123
123
  </a>
124
124
  </div>