@digilogiclabs/create-saas-app 1.1.2 → 1.3.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 (221) hide show
  1. package/CHANGELOG.md +7 -7
  2. package/bin/index.js +36 -36
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/index.js +56 -12
  5. package/dist/index.js.map +1 -1
  6. package/dist/templates/mobile/base/template/.env.example +15 -15
  7. package/dist/templates/mobile/base/template/app/checkout.tsx +20 -20
  8. package/dist/templates/web/base/template/src/app/checkout/page.tsx +28 -28
  9. package/dist/templates/web/ui-auth/template/next.config.js +12 -0
  10. package/dist/templates/web/ui-auth/template/package.json +40 -0
  11. package/dist/templates/web/ui-auth/template/postcss.config.js +7 -0
  12. package/dist/templates/web/ui-auth/template/src/app/auth/callback/route.ts +12 -0
  13. package/{src/templates/web/web-ui-package → dist/templates/web/ui-auth}/template/src/app/checkout/page.tsx +25 -28
  14. package/dist/templates/web/ui-auth/template/src/app/globals.css +42 -0
  15. package/dist/templates/web/ui-auth/template/src/app/layout.tsx +29 -0
  16. package/dist/templates/web/ui-auth/template/src/app/login/page.tsx +109 -0
  17. package/dist/templates/web/ui-auth/template/src/app/page.tsx +129 -0
  18. package/dist/templates/web/ui-auth/template/src/app/signup/page.tsx +128 -0
  19. package/dist/templates/web/ui-auth/template/src/components/providers/app-providers.tsx +25 -0
  20. package/{src/templates/web/web-ui-package → dist/templates/web/ui-auth}/template/src/components/shared/header.tsx +17 -8
  21. package/dist/templates/web/ui-auth/template/src/components/ui/badge.tsx +36 -0
  22. package/dist/templates/web/ui-auth/template/src/lib/utils.ts +7 -0
  23. package/dist/templates/web/ui-auth/template/tailwind.config.js +77 -0
  24. package/dist/templates/web/ui-auth/template/tsconfig.json +33 -0
  25. package/dist/templates/web/ui-auth-payments/template/README.md +165 -0
  26. package/dist/templates/web/ui-auth-payments/template/next.config.js +12 -0
  27. package/dist/templates/web/ui-auth-payments/template/package.json +42 -0
  28. package/dist/templates/web/ui-auth-payments/template/postcss.config.js +7 -0
  29. package/dist/templates/web/ui-auth-payments/template/src/app/auth/callback/route.ts +12 -0
  30. package/dist/templates/web/ui-auth-payments/template/src/app/billing/page.tsx +211 -0
  31. package/dist/templates/web/ui-auth-payments/template/src/app/checkout/page.tsx +142 -0
  32. package/dist/templates/web/ui-auth-payments/template/src/app/globals.css +42 -0
  33. package/dist/templates/web/ui-auth-payments/template/src/app/layout.tsx +29 -0
  34. package/dist/templates/web/ui-auth-payments/template/src/app/login/page.tsx +109 -0
  35. package/dist/templates/web/ui-auth-payments/template/src/app/page.tsx +143 -0
  36. package/dist/templates/web/ui-auth-payments/template/src/app/signup/page.tsx +128 -0
  37. package/dist/templates/web/ui-auth-payments/template/src/components/providers/app-providers.tsx +28 -0
  38. package/dist/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +60 -0
  39. package/dist/templates/web/ui-auth-payments/template/src/components/ui/badge.tsx +36 -0
  40. package/dist/templates/web/ui-auth-payments/template/src/lib/utils.ts +7 -0
  41. package/dist/templates/web/ui-auth-payments/template/tailwind.config.js +77 -0
  42. package/dist/templates/web/ui-auth-payments/template/tsconfig.json +33 -0
  43. package/dist/templates/web/ui-auth-payments-audio/template/README.md +187 -0
  44. package/{src/templates/web/web-ui-package → dist/templates/web/ui-auth-payments-audio}/template/next.config.js +0 -3
  45. package/dist/templates/web/ui-auth-payments-audio/template/package.json +42 -0
  46. package/dist/templates/web/ui-auth-payments-audio/template/src/app/auth/callback/route.ts +12 -0
  47. package/dist/templates/web/ui-auth-payments-audio/template/src/app/billing/page.tsx +211 -0
  48. package/dist/templates/web/ui-auth-payments-audio/template/src/app/checkout/page.tsx +142 -0
  49. package/dist/templates/web/ui-auth-payments-audio/template/src/app/login/page.tsx +109 -0
  50. package/dist/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +181 -0
  51. package/dist/templates/web/ui-auth-payments-audio/template/src/app/signup/page.tsx +128 -0
  52. package/dist/templates/web/ui-auth-payments-audio/template/src/components/providers/app-providers.tsx +28 -0
  53. package/dist/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +60 -0
  54. package/{src/templates/web/web-ui-package → dist/templates/web/ui-auth-payments-audio}/template/tailwind.config.js +1 -1
  55. package/dist/templates/web/ui-auth-payments-video/template/README.md +190 -0
  56. package/dist/templates/web/{web-ui-package → ui-auth-payments-video}/template/next.config.js +0 -3
  57. package/dist/templates/web/ui-auth-payments-video/template/package.json +42 -0
  58. package/dist/templates/web/ui-auth-payments-video/template/src/app/auth/callback/route.ts +12 -0
  59. package/dist/templates/web/ui-auth-payments-video/template/src/app/billing/page.tsx +211 -0
  60. package/dist/templates/web/ui-auth-payments-video/template/src/app/checkout/page.tsx +142 -0
  61. package/dist/templates/web/ui-auth-payments-video/template/src/app/login/page.tsx +109 -0
  62. package/dist/templates/web/ui-auth-payments-video/template/src/app/page.tsx +187 -0
  63. package/dist/templates/web/ui-auth-payments-video/template/src/app/signup/page.tsx +128 -0
  64. package/dist/templates/web/ui-auth-payments-video/template/src/components/providers/app-providers.tsx +28 -0
  65. package/dist/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +60 -0
  66. package/dist/templates/web/{web-ui-package → ui-auth-payments-video}/template/tailwind.config.js +1 -1
  67. package/dist/templates/web/ui-only/template/next.config.js +12 -0
  68. package/dist/templates/web/{web-ui-package → ui-only}/template/package.json +3 -3
  69. package/dist/templates/web/ui-only/template/postcss.config.js +7 -0
  70. package/dist/templates/web/ui-only/template/src/app/auth/callback/route.ts +12 -0
  71. package/dist/templates/web/{web-ui-package → ui-only}/template/src/app/checkout/page.tsx +25 -28
  72. package/dist/templates/web/ui-only/template/src/app/globals.css +42 -0
  73. package/dist/templates/web/ui-only/template/src/app/layout.tsx +29 -0
  74. package/dist/templates/web/ui-only/template/src/app/login/page.tsx +63 -0
  75. package/dist/templates/web/ui-only/template/src/app/signup/page.tsx +79 -0
  76. package/dist/templates/web/ui-only/template/src/components/providers/app-providers.tsx +22 -0
  77. package/dist/templates/web/{web-ui-package → ui-only}/template/src/components/shared/header.tsx +17 -8
  78. package/dist/templates/web/ui-only/template/src/components/ui/badge.tsx +36 -0
  79. package/dist/templates/web/ui-only/template/src/lib/utils.ts +7 -0
  80. package/dist/templates/web/ui-only/template/tailwind.config.js +77 -0
  81. package/dist/templates/web/ui-only/template/tsconfig.json +33 -0
  82. package/dist/templates/web/ui-package-test/template/package.json +2 -2
  83. package/package.json +1 -1
  84. package/src/templates/mobile/base/template/.env.example +15 -15
  85. package/src/templates/mobile/base/template/app/checkout.tsx +20 -20
  86. package/src/templates/web/base/template/src/app/checkout/page.tsx +28 -28
  87. package/src/templates/web/ui-auth/template/README.md +68 -0
  88. package/src/templates/web/ui-auth/template/next.config.js +12 -0
  89. package/src/templates/web/ui-auth/template/package.json +40 -0
  90. package/src/templates/web/ui-auth/template/postcss.config.js +7 -0
  91. package/src/templates/web/ui-auth/template/src/app/auth/callback/route.ts +12 -0
  92. package/src/templates/web/ui-auth/template/src/app/checkout/page.tsx +25 -0
  93. package/src/templates/web/ui-auth/template/src/app/globals.css +42 -0
  94. package/src/templates/web/ui-auth/template/src/app/layout.tsx +29 -0
  95. package/src/templates/web/ui-auth/template/src/app/login/page.tsx +109 -0
  96. package/src/templates/web/ui-auth/template/src/app/page.tsx +129 -0
  97. package/src/templates/web/ui-auth/template/src/app/signup/page.tsx +128 -0
  98. package/src/templates/web/ui-auth/template/src/components/providers/app-providers.tsx +25 -0
  99. package/src/templates/web/ui-auth/template/src/components/shared/header.tsx +51 -0
  100. package/src/templates/web/ui-auth/template/src/components/ui/badge.tsx +36 -0
  101. package/src/templates/web/ui-auth/template/src/lib/utils.ts +7 -0
  102. package/src/templates/web/ui-auth/template/tailwind.config.js +77 -0
  103. package/src/templates/web/ui-auth/template/tsconfig.json +33 -0
  104. package/src/templates/web/ui-auth-payments/template/README.md +165 -0
  105. package/src/templates/web/ui-auth-payments/template/next.config.js +12 -0
  106. package/src/templates/web/ui-auth-payments/template/package.json +42 -0
  107. package/src/templates/web/ui-auth-payments/template/postcss.config.js +7 -0
  108. package/src/templates/web/ui-auth-payments/template/src/app/auth/callback/route.ts +12 -0
  109. package/src/templates/web/ui-auth-payments/template/src/app/billing/page.tsx +211 -0
  110. package/src/templates/web/ui-auth-payments/template/src/app/checkout/page.tsx +142 -0
  111. package/src/templates/web/ui-auth-payments/template/src/app/globals.css +42 -0
  112. package/src/templates/web/ui-auth-payments/template/src/app/layout.tsx +29 -0
  113. package/src/templates/web/ui-auth-payments/template/src/app/login/page.tsx +109 -0
  114. package/src/templates/web/ui-auth-payments/template/src/app/page.tsx +143 -0
  115. package/src/templates/web/ui-auth-payments/template/src/app/signup/page.tsx +128 -0
  116. package/src/templates/web/ui-auth-payments/template/src/components/providers/app-providers.tsx +28 -0
  117. package/src/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +60 -0
  118. package/src/templates/web/ui-auth-payments/template/src/components/ui/badge.tsx +36 -0
  119. package/src/templates/web/ui-auth-payments/template/src/lib/utils.ts +7 -0
  120. package/src/templates/web/ui-auth-payments/template/tailwind.config.js +77 -0
  121. package/src/templates/web/ui-auth-payments/template/tsconfig.json +33 -0
  122. package/src/templates/web/ui-auth-payments-audio/template/README.md +187 -0
  123. package/src/templates/web/ui-auth-payments-audio/template/next.config.js +12 -0
  124. package/src/templates/web/ui-auth-payments-audio/template/package.json +42 -0
  125. package/src/templates/web/ui-auth-payments-audio/template/postcss.config.js +7 -0
  126. package/src/templates/web/ui-auth-payments-audio/template/src/app/auth/callback/route.ts +12 -0
  127. package/src/templates/web/ui-auth-payments-audio/template/src/app/billing/page.tsx +211 -0
  128. package/src/templates/web/ui-auth-payments-audio/template/src/app/checkout/page.tsx +142 -0
  129. package/src/templates/web/ui-auth-payments-audio/template/src/app/globals.css +42 -0
  130. package/src/templates/web/ui-auth-payments-audio/template/src/app/layout.tsx +29 -0
  131. package/src/templates/web/ui-auth-payments-audio/template/src/app/login/page.tsx +109 -0
  132. package/src/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +181 -0
  133. package/src/templates/web/ui-auth-payments-audio/template/src/app/signup/page.tsx +128 -0
  134. package/src/templates/web/ui-auth-payments-audio/template/src/components/providers/app-providers.tsx +28 -0
  135. package/src/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +60 -0
  136. package/src/templates/web/ui-auth-payments-audio/template/src/components/ui/badge.tsx +36 -0
  137. package/src/templates/web/ui-auth-payments-audio/template/src/lib/utils.ts +7 -0
  138. package/src/templates/web/ui-auth-payments-audio/template/tailwind.config.js +77 -0
  139. package/src/templates/web/ui-auth-payments-audio/template/tsconfig.json +33 -0
  140. package/src/templates/web/ui-auth-payments-video/template/README.md +190 -0
  141. package/src/templates/web/ui-auth-payments-video/template/next.config.js +12 -0
  142. package/src/templates/web/ui-auth-payments-video/template/package.json +42 -0
  143. package/src/templates/web/ui-auth-payments-video/template/postcss.config.js +7 -0
  144. package/src/templates/web/ui-auth-payments-video/template/src/app/auth/callback/route.ts +12 -0
  145. package/src/templates/web/ui-auth-payments-video/template/src/app/billing/page.tsx +211 -0
  146. package/src/templates/web/ui-auth-payments-video/template/src/app/checkout/page.tsx +142 -0
  147. package/src/templates/web/ui-auth-payments-video/template/src/app/globals.css +42 -0
  148. package/src/templates/web/ui-auth-payments-video/template/src/app/layout.tsx +29 -0
  149. package/src/templates/web/ui-auth-payments-video/template/src/app/login/page.tsx +109 -0
  150. package/src/templates/web/ui-auth-payments-video/template/src/app/page.tsx +187 -0
  151. package/src/templates/web/ui-auth-payments-video/template/src/app/signup/page.tsx +128 -0
  152. package/src/templates/web/ui-auth-payments-video/template/src/components/providers/app-providers.tsx +28 -0
  153. package/src/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +60 -0
  154. package/src/templates/web/ui-auth-payments-video/template/src/components/ui/badge.tsx +36 -0
  155. package/src/templates/web/ui-auth-payments-video/template/src/lib/utils.ts +7 -0
  156. package/src/templates/web/ui-auth-payments-video/template/tailwind.config.js +77 -0
  157. package/src/templates/web/ui-auth-payments-video/template/tsconfig.json +33 -0
  158. package/src/templates/web/ui-only/template/.env.example +15 -0
  159. package/src/templates/web/ui-only/template/README.md +68 -0
  160. package/src/templates/web/ui-only/template/next.config.js +12 -0
  161. package/src/templates/web/{web-ui-package → ui-only}/template/package.json +3 -3
  162. package/src/templates/web/ui-only/template/postcss.config.js +7 -0
  163. package/src/templates/web/ui-only/template/src/app/auth/callback/route.ts +12 -0
  164. package/src/templates/web/ui-only/template/src/app/checkout/page.tsx +25 -0
  165. package/src/templates/web/ui-only/template/src/app/globals.css +42 -0
  166. package/src/templates/web/ui-only/template/src/app/layout.tsx +29 -0
  167. package/src/templates/web/ui-only/template/src/app/login/page.tsx +63 -0
  168. package/src/templates/web/ui-only/template/src/app/signup/page.tsx +79 -0
  169. package/src/templates/web/ui-only/template/src/components/providers/app-providers.tsx +22 -0
  170. package/src/templates/web/ui-only/template/src/components/shared/header.tsx +51 -0
  171. package/src/templates/web/ui-only/template/src/components/ui/badge.tsx +36 -0
  172. package/src/templates/web/ui-only/template/src/lib/utils.ts +7 -0
  173. package/src/templates/web/ui-only/template/tailwind.config.js +77 -0
  174. package/src/templates/web/ui-only/template/tsconfig.json +33 -0
  175. package/src/templates/web/ui-only/template.backup/.env.example +15 -0
  176. package/{dist/mobile/base/template → src/templates/web/ui-only/template.backup.20250817}/.env.example +15 -15
  177. package/src/templates/web/ui-package-test/template/package.json +2 -2
  178. package/dist/templates/web/web-ui-package/template/src/app/auth/callback/route.ts +0 -18
  179. package/dist/templates/web/web-ui-package/template/src/app/login/page.tsx +0 -39
  180. package/dist/templates/web/web-ui-package/template/src/app/signup/page.tsx +0 -39
  181. package/dist/templates/web/web-ui-package/template/src/components/providers/app-providers.tsx +0 -29
  182. package/src/templates/web/web-ui-package/template/.eslintrc.js +0 -8
  183. package/src/templates/web/web-ui-package/template/src/app/auth/callback/route.ts +0 -18
  184. package/src/templates/web/web-ui-package/template/src/app/login/page.tsx +0 -39
  185. package/src/templates/web/web-ui-package/template/src/app/signup/page.tsx +0 -39
  186. package/src/templates/web/web-ui-package/template/src/components/providers/app-providers.tsx +0 -29
  187. /package/dist/{web/base → templates/web/ui-auth}/template/.env.example +0 -0
  188. /package/dist/templates/web/{web-ui-package → ui-auth}/template/.eslintrc.js +0 -0
  189. /package/dist/templates/web/{web-ui-package → ui-auth}/template/README.md +0 -0
  190. /package/dist/{web/base → templates/web/ui-auth}/template.backup/.env.example +0 -0
  191. /package/dist/{web/base → templates/web/ui-auth}/template.backup.20250817/.env.example +0 -0
  192. /package/dist/templates/web/{web-ui-package → ui-auth-payments}/template/.env.example +0 -0
  193. /package/dist/templates/web/{web-ui-package/template.backup.20250817 → ui-auth-payments-audio/template}/.env.example +0 -0
  194. /package/dist/templates/web/{web-ui-package → ui-auth-payments-audio}/template/postcss.config.js +0 -0
  195. /package/dist/templates/web/{web-ui-package → ui-auth-payments-audio}/template/src/app/globals.css +0 -0
  196. /package/dist/templates/web/{web-ui-package → ui-auth-payments-audio}/template/src/app/layout.tsx +0 -0
  197. /package/dist/templates/web/{web-ui-package → ui-auth-payments-audio}/template/src/components/ui/badge.tsx +0 -0
  198. /package/dist/templates/web/{web-ui-package → ui-auth-payments-audio}/template/src/lib/utils.ts +0 -0
  199. /package/dist/templates/web/{web-ui-package → ui-auth-payments-audio}/template/tsconfig.json +0 -0
  200. /package/dist/templates/web/{web-ui-package/template.backup → ui-auth-payments-video/template}/.env.example +0 -0
  201. /package/{src/templates/web/web-ui-package → dist/templates/web/ui-auth-payments-video}/template/postcss.config.js +0 -0
  202. /package/{src/templates/web/web-ui-package → dist/templates/web/ui-auth-payments-video}/template/src/app/globals.css +0 -0
  203. /package/{src/templates/web/web-ui-package → dist/templates/web/ui-auth-payments-video}/template/src/app/layout.tsx +0 -0
  204. /package/{src/templates/web/web-ui-package → dist/templates/web/ui-auth-payments-video}/template/src/components/ui/badge.tsx +0 -0
  205. /package/{src/templates/web/web-ui-package → dist/templates/web/ui-auth-payments-video}/template/src/lib/utils.ts +0 -0
  206. /package/{src/templates/web/web-ui-package → dist/templates/web/ui-auth-payments-video}/template/tsconfig.json +0 -0
  207. /package/dist/{web/ui-package-test → templates/web/ui-only}/template/.env.example +0 -0
  208. /package/dist/{web/base → templates/web/ui-only}/template/.eslintrc.js +0 -0
  209. /package/{src/templates/web/web-ui-package → dist/templates/web/ui-only}/template/README.md +0 -0
  210. /package/dist/templates/web/{web-ui-package → ui-only}/template/src/app/page.tsx +0 -0
  211. /package/dist/{web/ui-package-test → templates/web/ui-only}/template.backup/.env.example +0 -0
  212. /package/dist/{web/ui-package-test → templates/web/ui-only}/template.backup.20250817/.env.example +0 -0
  213. /package/src/templates/web/{web-ui-package → ui-auth}/template/.env.example +0 -0
  214. /package/{dist/web/ui-package-test → src/templates/web/ui-auth}/template/.eslintrc.js +0 -0
  215. /package/src/templates/web/{web-ui-package → ui-auth}/template.backup/.env.example +0 -0
  216. /package/src/templates/web/{web-ui-package → ui-auth}/template.backup.20250817/.env.example +0 -0
  217. /package/{dist/web/web-ui-package → src/templates/web/ui-auth-payments}/template/.env.example +0 -0
  218. /package/{dist/web/web-ui-package/template.backup.20250817 → src/templates/web/ui-auth-payments-audio/template}/.env.example +0 -0
  219. /package/{dist/web/web-ui-package/template.backup → src/templates/web/ui-auth-payments-video/template}/.env.example +0 -0
  220. /package/{dist/web/web-ui-package → src/templates/web/ui-only}/template/.eslintrc.js +0 -0
  221. /package/src/templates/web/{web-ui-package → ui-only}/template/src/app/page.tsx +0 -0
@@ -0,0 +1,42 @@
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
+ }
@@ -0,0 +1,29 @@
1
+ import type { Metadata } from 'next'
2
+ import { Inter } from 'next/font/google'
3
+ import './globals.css'
4
+ import { AppProviders } from '@/components/providers/app-providers'
5
+ import { Header } from '@/components/shared/header'
6
+
7
+ const inter = Inter({ subsets: ['latin'] })
8
+
9
+ export const metadata: Metadata = {
10
+ title: '{{titleCaseName}}',
11
+ description: '{{description}}',
12
+ }
13
+
14
+ export default function RootLayout({
15
+ children,
16
+ }: {
17
+ children: React.ReactNode
18
+ }) {
19
+ return (
20
+ <html lang="en" suppressHydrationWarning>
21
+ <body className={inter.className}>
22
+ <AppProviders>
23
+ <Header />
24
+ {children}
25
+ </AppProviders>
26
+ </body>
27
+ </html>
28
+ )
29
+ }
@@ -0,0 +1,63 @@
1
+ 'use client';
2
+
3
+ import React, { useState } from 'react';
4
+ import { Button, Card, Input, Label } from '@digilogiclabs/saas-factory-ui';
5
+
6
+ export default function LoginPage() {
7
+ const [email, setEmail] = useState('');
8
+ const [password, setPassword] = useState('');
9
+
10
+ const handleLogin = async (e: React.FormEvent) => {
11
+ e.preventDefault();
12
+ alert('Login functionality requires @digilogiclabs/saas-factory-auth package');
13
+ console.log('Login values:', { email, password });
14
+ };
15
+
16
+ const handleGoogleLogin = async () => {
17
+ alert('Google login functionality requires @digilogiclabs/saas-factory-auth package');
18
+ };
19
+
20
+ return (
21
+ <div className="flex items-center justify-center min-h-screen bg-gray-100">
22
+ <Card className="w-full max-w-md p-8">
23
+ <h1 className="text-2xl font-bold text-center mb-6">Sign In</h1>
24
+ <form onSubmit={handleLogin} className="space-y-4">
25
+ <div>
26
+ <Label htmlFor="email">Email</Label>
27
+ <Input
28
+ id="email"
29
+ type="email"
30
+ value={email}
31
+ onChange={(e) => setEmail(e.target.value)}
32
+ placeholder="Enter your email"
33
+ required
34
+ />
35
+ </div>
36
+ <div>
37
+ <Label htmlFor="password">Password</Label>
38
+ <Input
39
+ id="password"
40
+ type="password"
41
+ value={password}
42
+ onChange={(e) => setPassword(e.target.value)}
43
+ placeholder="Enter your password"
44
+ required
45
+ />
46
+ </div>
47
+ <Button type="submit" className="w-full">
48
+ Sign In
49
+ </Button>
50
+ <Button
51
+ type="button"
52
+ variant="outline"
53
+ className="w-full"
54
+ onClick={handleGoogleLogin}
55
+ >
56
+ Sign in with Google
57
+ </Button>
58
+ </form>
59
+ </Card>
60
+ </div>
61
+ );
62
+ }
63
+
@@ -0,0 +1,79 @@
1
+ 'use client';
2
+
3
+ import React, { useState } from 'react';
4
+ import { Button, Card, Input, Label } from '@digilogiclabs/saas-factory-ui';
5
+
6
+ export default function SignupPage() {
7
+ const [email, setEmail] = useState('');
8
+ const [password, setPassword] = useState('');
9
+ const [confirmPassword, setConfirmPassword] = useState('');
10
+
11
+ const handleSignup = async (e: React.FormEvent) => {
12
+ e.preventDefault();
13
+ if (password !== confirmPassword) {
14
+ alert('Passwords do not match');
15
+ return;
16
+ }
17
+ alert('Signup functionality requires @digilogiclabs/saas-factory-auth package');
18
+ console.log('Signup values:', { email, password });
19
+ };
20
+
21
+ const handleGoogleSignup = async () => {
22
+ alert('Google signup functionality requires @digilogiclabs/saas-factory-auth package');
23
+ };
24
+
25
+ return (
26
+ <div className="flex items-center justify-center min-h-screen bg-gray-100">
27
+ <Card className="w-full max-w-md p-8">
28
+ <h1 className="text-2xl font-bold text-center mb-6">Sign Up</h1>
29
+ <form onSubmit={handleSignup} className="space-y-4">
30
+ <div>
31
+ <Label htmlFor="email">Email</Label>
32
+ <Input
33
+ id="email"
34
+ type="email"
35
+ value={email}
36
+ onChange={(e) => setEmail(e.target.value)}
37
+ placeholder="Enter your email"
38
+ required
39
+ />
40
+ </div>
41
+ <div>
42
+ <Label htmlFor="password">Password</Label>
43
+ <Input
44
+ id="password"
45
+ type="password"
46
+ value={password}
47
+ onChange={(e) => setPassword(e.target.value)}
48
+ placeholder="Enter your password"
49
+ required
50
+ />
51
+ </div>
52
+ <div>
53
+ <Label htmlFor="confirmPassword">Confirm Password</Label>
54
+ <Input
55
+ id="confirmPassword"
56
+ type="password"
57
+ value={confirmPassword}
58
+ onChange={(e) => setConfirmPassword(e.target.value)}
59
+ placeholder="Confirm your password"
60
+ required
61
+ />
62
+ </div>
63
+ <Button type="submit" className="w-full">
64
+ Sign Up
65
+ </Button>
66
+ <Button
67
+ type="button"
68
+ variant="outline"
69
+ className="w-full"
70
+ onClick={handleGoogleSignup}
71
+ >
72
+ Sign up with Google
73
+ </Button>
74
+ </form>
75
+ </Card>
76
+ </div>
77
+ );
78
+ }
79
+
@@ -0,0 +1,22 @@
1
+ 'use client'
2
+
3
+ import React from 'react'
4
+ import { ThemeProvider } from 'next-themes'
5
+
6
+ interface AppProvidersProps {
7
+ children: React.ReactNode
8
+ }
9
+
10
+ export function AppProviders({ children }: AppProvidersProps) {
11
+ return (
12
+ <ThemeProvider
13
+ attribute="class"
14
+ defaultTheme="system"
15
+ enableSystem
16
+ disableTransitionOnChange
17
+ >
18
+ {children}
19
+ </ThemeProvider>
20
+ )
21
+ }
22
+
@@ -2,12 +2,14 @@
2
2
 
3
3
  import React from 'react';
4
4
  import Link from 'next/link';
5
- import { useAuth } from '@digilogiclabs/saas-factory-auth';
6
- import { Button } from '@/components/ui/button';
7
5
  import { LogOut } from 'lucide-react';
8
6
 
9
7
  export function Header() {
10
- const { user, signOut } = useAuth();
8
+ const user = null; // Placeholder for auth state
9
+
10
+ const handleSignOut = () => {
11
+ alert('Sign out functionality requires @digilogiclabs/saas-factory-auth package');
12
+ };
11
13
 
12
14
  return (
13
15
  <header className="bg-white dark:bg-gray-800 shadow-md">
@@ -21,18 +23,24 @@ export function Header() {
21
23
  <Link href="/dashboard" className="text-gray-600 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white">
22
24
  Dashboard
23
25
  </Link>
24
- <Button variant="ghost" size="icon" onClick={signOut}>
26
+ <button
27
+ onClick={handleSignOut}
28
+ className="p-2 text-gray-600 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white"
29
+ >
25
30
  <LogOut className="h-5 w-5" />
26
- </Button>
31
+ </button>
27
32
  </>
28
33
  ) : (
29
34
  <>
30
35
  <Link href="/login" className="text-gray-600 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white">
31
36
  Login
32
37
  </Link>
33
- <Button asChild>
34
- <Link href="/signup">Sign Up</Link>
35
- </Button>
38
+ <Link
39
+ href="/signup"
40
+ className="px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700"
41
+ >
42
+ Sign Up
43
+ </Link>
36
44
  </>
37
45
  )}
38
46
  </nav>
@@ -40,3 +48,4 @@ export function Header() {
40
48
  </header>
41
49
  );
42
50
  }
51
+
@@ -0,0 +1,36 @@
1
+ import * as React from "react"
2
+ import { cva, type VariantProps } from "class-variance-authority"
3
+ import { cn } from "@/lib/utils"
4
+
5
+ const badgeVariants = cva(
6
+ "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
7
+ {
8
+ variants: {
9
+ variant: {
10
+ default:
11
+ "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
12
+ secondary:
13
+ "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
14
+ destructive:
15
+ "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",
16
+ outline: "text-foreground",
17
+ },
18
+ },
19
+ defaultVariants: {
20
+ variant: "default",
21
+ },
22
+ }
23
+ )
24
+
25
+ export interface BadgeProps
26
+ extends React.HTMLAttributes<HTMLDivElement>,
27
+ VariantProps<typeof badgeVariants> {}
28
+
29
+ function Badge({ className, variant, ...props }: BadgeProps) {
30
+ return (
31
+ <div className={cn(badgeVariants({ variant }), className)} {...props} />
32
+ )
33
+ }
34
+
35
+ export { Badge, badgeVariants }
36
+
@@ -0,0 +1,7 @@
1
+ import { type ClassValue, clsx } from "clsx"
2
+ import { twMerge } from "tailwind-merge"
3
+
4
+ export function cn(...inputs: ClassValue[]) {
5
+ return twMerge(clsx(inputs))
6
+ }
7
+
@@ -0,0 +1,77 @@
1
+ /** @type {import('tailwindcss').Config} */
2
+ module.exports = {
3
+ darkMode: ["class"],
4
+ content: [
5
+ './pages/**/*.{ts,tsx}',
6
+ './components/**/*.{ts,tsx}',
7
+ './app/**/*.{ts,tsx}',
8
+ './src/**/*.{ts,tsx}',
9
+ '../../node_modules/@digilogiclabs/saas-factory-ui/dist/**/*.{js,ts,jsx,tsx}',
10
+ ],
11
+ theme: {
12
+ container: {
13
+ center: true,
14
+ padding: "2rem",
15
+ screens: {
16
+ "2xl": "1400px",
17
+ },
18
+ },
19
+ extend: {
20
+ colors: {
21
+ border: "hsl(var(--border))",
22
+ input: "hsl(var(--input))",
23
+ ring: "hsl(var(--ring))",
24
+ background: "hsl(var(--background))",
25
+ foreground: "hsl(var(--foreground))",
26
+ primary: {
27
+ DEFAULT: "hsl(var(--primary))",
28
+ foreground: "hsl(var(--primary-foreground))",
29
+ },
30
+ secondary: {
31
+ DEFAULT: "hsl(var(--secondary))",
32
+ foreground: "hsl(var(--secondary-foreground))",
33
+ },
34
+ destructive: {
35
+ DEFAULT: "hsl(var(--destructive))",
36
+ foreground: "hsl(var(--destructive-foreground))",
37
+ },
38
+ muted: {
39
+ DEFAULT: "hsl(var(--muted))",
40
+ foreground: "hsl(var(--muted-foreground))",
41
+ },
42
+ accent: {
43
+ DEFAULT: "hsl(var(--accent))",
44
+ foreground: "hsl(var(--accent-foreground))",
45
+ },
46
+ popover: {
47
+ DEFAULT: "hsl(var(--popover))",
48
+ foreground: "hsl(var(--popover-foreground))",
49
+ },
50
+ card: {
51
+ DEFAULT: "hsl(var(--card))",
52
+ foreground: "hsl(var(--card-foreground))",
53
+ },
54
+ },
55
+ borderRadius: {
56
+ lg: "var(--radius)",
57
+ md: "calc(var(--radius) - 2px)",
58
+ sm: "calc(var(--radius) - 4px)",
59
+ },
60
+ keyframes: {
61
+ "accordion-down": {
62
+ from: { height: 0 },
63
+ to: { height: "var(--radix-accordion-content-height)" },
64
+ },
65
+ "accordion-up": {
66
+ from: { height: "var(--radix-accordion-content-height)" },
67
+ to: { height: 0 },
68
+ },
69
+ },
70
+ animation: {
71
+ "accordion-down": "accordion-down 0.2s ease-out",
72
+ "accordion-up": "accordion-up 0.2s ease-out",
73
+ },
74
+ },
75
+ },
76
+ plugins: [],
77
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es5",
4
+ "lib": ["dom", "dom.iterable", "es6"],
5
+ "allowJs": true,
6
+ "skipLibCheck": true,
7
+ "strict": true,
8
+ "noEmit": true,
9
+ "esModuleInterop": true,
10
+ "module": "esnext",
11
+ "moduleResolution": "bundler",
12
+ "resolveJsonModule": true,
13
+ "isolatedModules": true,
14
+ "jsx": "preserve",
15
+ "incremental": true,
16
+ "plugins": [
17
+ {
18
+ "name": "next"
19
+ }
20
+ ],
21
+ "baseUrl": ".",
22
+ "paths": {
23
+ "@/*": ["./src/*"],
24
+ "@/components/*": ["./src/components/*"],
25
+ "@/lib/*": ["./src/lib/*"],
26
+ "@/hooks/*": ["./src/hooks/*"],
27
+ "@/types/*": ["./src/types/*"]
28
+ }
29
+ },
30
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
31
+ "exclude": ["node_modules"]
32
+ }
33
+
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "{{packageName}}",
3
3
  "version": "0.1.0",
4
- "description": "{{description}} (with UI Package v0.7.3)",
4
+ "description": "{{description}} (with UI Package v0.10.0)",
5
5
  "private": true,
6
6
  "scripts": {
7
7
  "dev": "next dev",
@@ -14,7 +14,7 @@
14
14
  "next": "15.4.5",
15
15
  "react": "19.1.0",
16
16
  "react-dom": "19.1.0",
17
- "@digilogiclabs/saas-factory-ui": "^0.7.3",
17
+ "@digilogiclabs/saas-factory-ui": "^0.10.0",
18
18
  "tailwindcss": "^3.4.0",
19
19
  "autoprefixer": "^10.4.16",
20
20
  "postcss": "^8.4.31",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digilogiclabs/create-saas-app",
3
- "version": "1.1.2",
3
+ "version": "1.3.0",
4
4
  "description": "Create modern SaaS applications with Digi Logic Labs packages",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -1,15 +1,15 @@
1
- # Auth Configuration
2
- NEXT_PUBLIC_AUTH_PROVIDER=supabase|firebase
3
-
4
- # Supabase
5
- NEXT_PUBLIC_SUPABASE_URL=
6
- NEXT_PUBLIC_SUPABASE_ANON_KEY=
7
-
8
- # Firebase
9
- NEXT_PUBLIC_FIREBASE_API_KEY=
10
- NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=
11
- NEXT_PUBLIC_FIREBASE_PROJECT_ID=
12
-
13
- # Payments
14
- NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=
15
- STRIPE_SECRET_KEY=
1
+ # Auth Configuration
2
+ NEXT_PUBLIC_AUTH_PROVIDER=supabase|firebase
3
+
4
+ # Supabase
5
+ NEXT_PUBLIC_SUPABASE_URL=
6
+ NEXT_PUBLIC_SUPABASE_ANON_KEY=
7
+
8
+ # Firebase
9
+ NEXT_PUBLIC_FIREBASE_API_KEY=
10
+ NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=
11
+ NEXT_PUBLIC_FIREBASE_PROJECT_ID=
12
+
13
+ # Payments
14
+ NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=
15
+ STRIPE_SECRET_KEY=
@@ -1,20 +1,20 @@
1
- import React from 'react';
2
- import { View, Button } from 'react-native';
3
- import { useStripe } from '@digilogiclabs/saas-factory-payments/native';
4
-
5
- export default function CheckoutScreen() {
6
- const { handleCheckout } = useStripe();
7
-
8
- const onCheckout = async () => {
9
- await handleCheckout({
10
- priceId: 'price_12345', // Replace with your actual price ID
11
- returnUrl: 'exp://localhost:8081/dashboard',
12
- });
13
- };
14
-
15
- return (
16
- <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
17
- <Button title="Proceed to Checkout" onPress={onCheckout} />
18
- </View>
19
- );
20
- }
1
+ import React from 'react';
2
+ import { View, Button } from 'react-native';
3
+ import { useStripe } from '@digilogiclabs/saas-factory-payments/native';
4
+
5
+ export default function CheckoutScreen() {
6
+ const { handleCheckout } = useStripe();
7
+
8
+ const onCheckout = async () => {
9
+ await handleCheckout({
10
+ priceId: 'price_12345', // Replace with your actual price ID
11
+ returnUrl: 'exp://localhost:8081/dashboard',
12
+ });
13
+ };
14
+
15
+ return (
16
+ <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
17
+ <Button title="Proceed to Checkout" onPress={onCheckout} />
18
+ </View>
19
+ );
20
+ }
@@ -1,28 +1,28 @@
1
- 'use client';
2
-
3
- import React from 'react';
4
- import { useStripe } from '@digilogiclabs/saas-factory-payments';
5
- import { Button } from '@/components/ui/button';
6
-
7
- export default function CheckoutPage() {
8
- const { handleCheckout } = useStripe();
9
-
10
- const onCheckout = async () => {
11
- await handleCheckout({
12
- priceId: 'price_12345', // Replace with your actual price ID
13
- returnUrl: `${window.location.origin}/dashboard`,
14
- });
15
- };
16
-
17
- return (
18
- <div className="flex items-center justify-center min-h-screen bg-gray-100">
19
- <div className="p-8 bg-white rounded-lg shadow-md">
20
- <h1 className="text-2xl font-bold mb-4">Checkout</h1>
21
- <p className="mb-6">Click the button below to proceed to payment.</p>
22
- <Button onClick={onCheckout}>
23
- Proceed to Checkout
24
- </Button>
25
- </div>
26
- </div>
27
- );
28
- }
1
+ 'use client';
2
+
3
+ import React from 'react';
4
+ import { useStripe } from '@digilogiclabs/saas-factory-payments';
5
+ import { Button } from '@/components/ui/button';
6
+
7
+ export default function CheckoutPage() {
8
+ const { handleCheckout } = useStripe();
9
+
10
+ const onCheckout = async () => {
11
+ await handleCheckout({
12
+ priceId: 'price_12345', // Replace with your actual price ID
13
+ returnUrl: `${window.location.origin}/dashboard`,
14
+ });
15
+ };
16
+
17
+ return (
18
+ <div className="flex items-center justify-center min-h-screen bg-gray-100">
19
+ <div className="p-8 bg-white rounded-lg shadow-md">
20
+ <h1 className="text-2xl font-bold mb-4">Checkout</h1>
21
+ <p className="mb-6">Click the button below to proceed to payment.</p>
22
+ <Button onClick={onCheckout}>
23
+ Proceed to Checkout
24
+ </Button>
25
+ </div>
26
+ </div>
27
+ );
28
+ }
@@ -0,0 +1,68 @@
1
+ # {{titleCaseName}}
2
+
3
+ {{description}}
4
+
5
+ ## Getting Started
6
+
7
+ First, run the development server:
8
+
9
+ ```bash
10
+ npm run dev
11
+ # or
12
+ yarn dev
13
+ # or
14
+ pnpm dev
15
+ ```
16
+
17
+ Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
18
+
19
+ ## Features
20
+
21
+ - ⚡ **Next.js 14** - React framework with App Router
22
+ - 🎨 **Tailwind CSS** - Utility-first CSS framework
23
+ - 🔒 **{{#auth}}{{#firebase}}Firebase{{/firebase}}{{#supabase}}Supabase{{/supabase}}{{/auth}} Auth** - Authentication ready
24
+ - 📱 **Responsive Design** - Mobile-first approach
25
+ - 🌙 **Dark Mode** - Built-in theme switching
26
+ - 📦 **TypeScript** - Type-safe development
27
+ - 🎯 **ESLint & Prettier** - Code quality tools
28
+
29
+ ## Project Structure
30
+
31
+ ```
32
+ src/
33
+ ├── app/ # Next.js App Router
34
+ │ ├── globals.css # Global styles
35
+ │ ├── layout.tsx # Root layout
36
+ │ └── page.tsx # Home page
37
+ ├── components/ # React components
38
+ │ ├── ui/ # UI components
39
+ │ └── providers/ # Context providers
40
+ ├── lib/ # Utility functions
41
+ ├── hooks/ # Custom React hooks
42
+ └── types/ # TypeScript definitions
43
+ ```
44
+
45
+ ## Environment Variables
46
+
47
+ Copy `.env.example` to `.env.local` and fill in your configuration:
48
+
49
+ ```bash
50
+ cp .env.example .env.local
51
+ ```
52
+
53
+ ## Deployment
54
+
55
+ The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new).
56
+
57
+ Check out the [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
58
+
59
+ ## Learn More
60
+
61
+ - [Next.js Documentation](https://nextjs.org/docs)
62
+ - [Tailwind CSS Documentation](https://tailwindcss.com/docs)
63
+ - [{{#auth}}{{#firebase}}Firebase Documentation{{/firebase}}{{#supabase}}Supabase Documentation{{/supabase}}{{/auth}}]({{#auth}}{{#firebase}}https://firebase.google.com/docs{{/firebase}}{{#supabase}}https://supabase.com/docs{{/supabase}}{{/auth}})
64
+
65
+ ## Support
66
+
67
+ For support, email support@digilogiclabs.com or join our Discord community.
68
+