@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
@@ -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.11.1)",
5
5
  "private": true,
6
6
  "scripts": {
7
7
  "dev": "next dev",
@@ -14,7 +14,7 @@
14
14
  "next": "^15.0.0",
15
15
  "react": "^19.0.0",
16
16
  "react-dom": "^19.0.0",
17
- "@digilogiclabs/saas-factory-ui": "^0.7.3",
17
+ "@digilogiclabs/saas-factory-ui": "^0.11.1",
18
18
  "tailwindcss": "^3.3.0",
19
19
  "autoprefixer": "^10.4.16",
20
20
  "postcss": "^8.4.31",
@@ -22,7 +22,7 @@
22
22
  "class-variance-authority": "^0.7.0",
23
23
  "tailwind-merge": "^2.0.0",
24
24
  "next-themes": "^0.2.1",
25
- "lucide-react": "^0.292.0"
25
+ "lucide-react": "^0.542.0"
26
26
  },
27
27
  "devDependencies": {
28
28
  "typescript": "^5.0.0",
@@ -0,0 +1,7 @@
1
+ module.exports = {
2
+ plugins: {
3
+ tailwindcss: {},
4
+ autoprefixer: {},
5
+ },
6
+ }
7
+
@@ -0,0 +1,12 @@
1
+ import { NextResponse } from 'next/server';
2
+ import type { NextRequest } from 'next/server';
3
+
4
+ export async function GET(request: NextRequest) {
5
+ const requestUrl = new URL(request.url);
6
+
7
+ // Placeholder auth callback - requires @digilogiclabs/saas-factory-auth package
8
+ console.log('Auth callback triggered - requires auth package for full functionality');
9
+
10
+ // URL to redirect to after sign in process completes
11
+ return NextResponse.redirect(requestUrl.origin);
12
+ }
@@ -0,0 +1,25 @@
1
+ 'use client';
2
+
3
+ import React from 'react';
4
+
5
+ export default function CheckoutPage() {
6
+ const onCheckout = async () => {
7
+ alert('Checkout functionality requires @digilogiclabs/saas-factory-payments package');
8
+ };
9
+
10
+ return (
11
+ <div className="flex items-center justify-center min-h-screen bg-gray-100">
12
+ <div className="p-8 bg-white rounded-lg shadow-md">
13
+ <h1 className="text-2xl font-bold mb-4">Checkout</h1>
14
+ <p className="mb-6">Click the button below to proceed to payment.</p>
15
+ <button
16
+ onClick={onCheckout}
17
+ className="px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700"
18
+ >
19
+ Proceed to Checkout
20
+ </button>
21
+ </div>
22
+ </div>
23
+ );
24
+ }
25
+
@@ -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
+
@@ -0,0 +1,51 @@
1
+ 'use client';
2
+
3
+ import React from 'react';
4
+ import Link from 'next/link';
5
+ import { LogOut } from 'lucide-react';
6
+
7
+ export function Header() {
8
+ const user = null; // Placeholder for auth state
9
+
10
+ const handleSignOut = () => {
11
+ alert('Sign out functionality requires @digilogiclabs/saas-factory-auth package');
12
+ };
13
+
14
+ return (
15
+ <header className="bg-white dark:bg-gray-800 shadow-md">
16
+ <div className="container mx-auto px-4 py-4 flex justify-between items-center">
17
+ <Link href="/" className="text-2xl font-bold text-gray-900 dark:text-white">
18
+ {{titleCaseName}}
19
+ </Link>
20
+ <nav className="flex items-center gap-4">
21
+ {user ? (
22
+ <>
23
+ <Link href="/dashboard" className="text-gray-600 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white">
24
+ Dashboard
25
+ </Link>
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
+ >
30
+ <LogOut className="h-5 w-5" />
31
+ </button>
32
+ </>
33
+ ) : (
34
+ <>
35
+ <Link href="/login" className="text-gray-600 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white">
36
+ Login
37
+ </Link>
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>
44
+ </>
45
+ )}
46
+ </nav>
47
+ </div>
48
+ </header>
49
+ );
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
+
@@ -0,0 +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,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,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",
@@ -1,18 +0,0 @@
1
- import { createRouteHandlerClient } from '@supabase/auth-helpers-nextjs';
2
- import { cookies } from 'next/headers';
3
- import { NextResponse } from 'next/server';
4
-
5
- import type { NextRequest } from 'next/server';
6
-
7
- export async function GET(request: NextRequest) {
8
- const requestUrl = new URL(request.url);
9
- const code = requestUrl.searchParams.get('code');
10
-
11
- if (code) {
12
- const supabase = createRouteHandlerClient({ cookies });
13
- await supabase.auth.exchangeCodeForSession(code);
14
- }
15
-
16
- // URL to redirect to after sign in process completes
17
- return NextResponse.redirect(requestUrl.origin);
18
- }
@@ -1,39 +0,0 @@
1
- 'use client';
2
-
3
- import { LoginForm } from '@digilogiclabs/saas-factory-ui';
4
- import { AuthProvider } from '@digilogiclabs/saas-factory-auth';
5
- import { createBrowserClient } from '@supabase/ssr';
6
- import React from 'react';
7
-
8
- export default function LoginPage() {
9
- const supabase = createBrowserClient(
10
- process.env.NEXT_PUBLIC_SUPABASE_URL!,
11
- process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
12
- );
13
-
14
- const handleLogin = async (values: any) => {
15
- await supabase.auth.signInWithPassword({
16
- email: values.email,
17
- password: values.password,
18
- });
19
- };
20
-
21
- const handleGoogleLogin = async () => {
22
- await supabase.auth.signInWithOAuth({
23
- provider: 'google',
24
- options: {
25
- redirectTo: `${location.origin}/auth/callback`,
26
- },
27
- });
28
- };
29
-
30
- return (
31
- <div className="flex items-center justify-center min-h-screen bg-gray-100">
32
- <LoginForm
33
- onSubmit={handleLogin}
34
- onGoogleSignIn={handleGoogleLogin}
35
- authProvider={AuthProvider.SUPABASE}
36
- />
37
- </div>
38
- );
39
- }