{"_id":"@dial8/onboard-adapter-firebase","_rev":"5-b1168d5c8003a38a85ec103edd02ac83","name":"@dial8/onboard-adapter-firebase","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"@dial8/onboard-adapter-firebase","version":"0.1.0","keywords":["react","firebase","auth","authentication","adapter","onboarding"],"author":{"name":"Your Name","email":"your.email@example.com"},"license":"MIT","_id":"@dial8/onboard-adapter-firebase@0.1.0","maintainers":[{"name":"dial8","email":"dial8tech@gmail.com"}],"homepage":"https://github.com/yourusername/dial8-onboard#readme","bugs":{"url":"https://github.com/yourusername/dial8-onboard/issues"},"dist":{"shasum":"5c8c100b3c7b777da25bc9e8b4df71c526bb3858","tarball":"https://registry.npmjs.org/@dial8/onboard-adapter-firebase/-/onboard-adapter-firebase-0.1.0.tgz","fileCount":3,"integrity":"sha512-1yPPDkTcNaoE1QnD+r7S8UXE4vyG8sC9zFcru9JimnK6csk8nI+cDRNZkKuSBWV/QxQfi1oOMUdmBPNUnlo3GQ==","signatures":[{"sig":"MEYCIQCVbMSm/tVOlA0CSqtyTYez5lyMF2jvns6l2KhKvpC5mwIhAMZrXDjgdNfjSfmXKt62CE/+G4VWqtEXsq/eo9F8rizP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5082},"main":"dist/index.js","module":"dist/index.mjs","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"03851da3bf56f605d8adce214337fa6674eb2491","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","build":"tsup src/index.ts --format cjs,esm","clean":"rm -rf dist","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"dial8","email":"dial8tech@gmail.com"},"repository":{"url":"git+https://github.com/yourusername/dial8-onboard.git","type":"git","directory":"packages/adapter-firebase"},"_npmVersion":"10.2.4","description":"Firebase authentication adapter for Dial8 Onboard library","directories":{},"_nodeVersion":"20.9.0","dependencies":{"@dial8/onboard":"file:../core"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.0.0","firebase":"^10.0.0","typescript":"^5.0.0","null-loader":"^4.0.1"},"peerDependencies":{"firebase":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/onboard-adapter-firebase_0.1.0_1754767725889_0.7784865758013504","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@dial8/onboard-adapter-firebase","version":"0.1.1","keywords":["react","firebase","auth","authentication","adapter","onboarding"],"author":{"name":"Your Name","email":"your.email@example.com"},"license":"MIT","_id":"@dial8/onboard-adapter-firebase@0.1.1","maintainers":[{"name":"dial8","email":"dial8tech@gmail.com"}],"homepage":"https://github.com/yourusername/dial8-onboard#readme","bugs":{"url":"https://github.com/yourusername/dial8-onboard/issues"},"dist":{"shasum":"0ad7fa40c30e0705cccb04b1dc176209c3731ffe","tarball":"https://registry.npmjs.org/@dial8/onboard-adapter-firebase/-/onboard-adapter-firebase-0.1.1.tgz","fileCount":3,"integrity":"sha512-OMySUXb3yZ3eH+OnC1b4z/W/9UVwdGrx9ydwyrxI9IC270vPckO4HU2OBNd4pnsMOEKD76bG+/8BEmDZKias8g==","signatures":[{"sig":"MEYCIQC96iRYgHnh0vn8kcL9qwVseg4jzu3oUsrIBiRvNTq73QIhALtrZbUPIbCwbaUphIevWXxL1BUhSgpO9QJpLmzYdutG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5082},"main":"dist/index.js","module":"dist/index.mjs","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"b50a77761635932b6037a58e49ec28947febdb54","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","build":"tsup src/index.ts --format cjs,esm","clean":"rm -rf dist","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"dial8","email":"dial8tech@gmail.com"},"repository":{"url":"git+https://github.com/yourusername/dial8-onboard.git","type":"git","directory":"packages/adapter-firebase"},"_npmVersion":"10.2.4","description":"Firebase authentication adapter for Dial8 Onboard library","directories":{},"_nodeVersion":"20.9.0","dependencies":{"@dial8/onboard":"file:../core"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.0.0","firebase":"^10.0.0","typescript":"^5.0.0","null-loader":"^4.0.1"},"peerDependencies":{"firebase":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/onboard-adapter-firebase_0.1.1_1754771200552_0.7179871631815862","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@dial8/onboard-adapter-firebase","version":"0.1.2","keywords":["react","firebase","auth","authentication","adapter","onboarding"],"author":{"name":"Your Name","email":"your.email@example.com"},"license":"MIT","_id":"@dial8/onboard-adapter-firebase@0.1.2","maintainers":[{"name":"dial8","email":"dial8tech@gmail.com"}],"homepage":"https://github.com/yourusername/dial8-onboard#readme","bugs":{"url":"https://github.com/yourusername/dial8-onboard/issues"},"dist":{"shasum":"0e9925612d67dbda96126a572f8a26a68d7ccc12","tarball":"https://registry.npmjs.org/@dial8/onboard-adapter-firebase/-/onboard-adapter-firebase-0.1.2.tgz","fileCount":3,"integrity":"sha512-qE9U9xZNJUOowTt0tDSfRdjYcknVRedNFjJSH7c4FVQl/5bIJLo+LAfKs190ZAqu0c+v+wobvDlgiuUA3080HA==","signatures":[{"sig":"MEYCIQDKRbBGs/WeYSna87mrEmabDdKPbQoJ2bvTHfHoRNXoJAIhAPGbHD7987tKmByIpkwHLwrOWfBwstkUp5RiUDRtC8hY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5082},"main":"dist/index.js","module":"dist/index.mjs","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"b50a77761635932b6037a58e49ec28947febdb54","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","build":"tsup src/index.ts --format cjs,esm","clean":"rm -rf dist","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"dial8","email":"dial8tech@gmail.com"},"repository":{"url":"git+https://github.com/yourusername/dial8-onboard.git","type":"git","directory":"packages/adapter-firebase"},"_npmVersion":"10.2.4","description":"Firebase authentication adapter for Dial8 Onboard library","directories":{},"_nodeVersion":"20.9.0","dependencies":{"@dial8/onboard":"file:../core"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.0.0","firebase":"^10.0.0","typescript":"^5.0.0","null-loader":"^4.0.1"},"peerDependencies":{"firebase":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/onboard-adapter-firebase_0.1.2_1754771236596_0.894926878083574","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@dial8/onboard-adapter-firebase","version":"0.1.3","keywords":["react","firebase","auth","authentication","adapter","onboarding"],"author":{"name":"Your Name","email":"your.email@example.com"},"license":"MIT","_id":"@dial8/onboard-adapter-firebase@0.1.3","maintainers":[{"name":"dial8","email":"dial8tech@gmail.com"}],"homepage":"https://github.com/yourusername/dial8-onboard#readme","bugs":{"url":"https://github.com/yourusername/dial8-onboard/issues"},"dist":{"shasum":"6a0df0a54a40aac23280efb19135897068c03755","tarball":"https://registry.npmjs.org/@dial8/onboard-adapter-firebase/-/onboard-adapter-firebase-0.1.3.tgz","fileCount":3,"integrity":"sha512-/iEd3HktacobOMe/LX6aqccZdNPPMQo7rCtZ0avXi0j65A6VaNyvA0+6kxjHdTIsGqFo01fHJ3WC49zfGId5Jw==","signatures":[{"sig":"MEUCIQDH9TDX9Dsvom/nEKAgO5fn5cACAh202NPcpTjIRJXSrgIgGw5kVlYJQH7NrMVywLxGqFuMdZHX5pTsOMw7p68oGMo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5148},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"448cfb587458ed9b8dbd74e75ddb6739dc7a5883","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","build":"tsup src/index.ts --format cjs,esm","clean":"rm -rf dist","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"dial8","email":"dial8tech@gmail.com"},"repository":{"url":"git+https://github.com/yourusername/dial8-onboard.git","type":"git","directory":"packages/adapter-firebase"},"_npmVersion":"10.2.4","description":"Firebase authentication adapter for Dial8 Onboard library","directories":{},"_nodeVersion":"20.9.0","dependencies":{"@dial8/onboard":"file:../core"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.0.0","firebase":"^10.0.0","typescript":"^5.0.0","null-loader":"^4.0.1"},"peerDependencies":{"firebase":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/onboard-adapter-firebase_0.1.3_1754772288716_0.46014391983035186","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@dial8/onboard-adapter-firebase","version":"0.1.4","description":"Firebase authentication adapter for Dial8 Onboard library","keywords":["react","firebase","auth","authentication","adapter","onboarding"],"author":{"name":"Your Name","email":"your.email@example.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/yourusername/dial8-onboard.git","directory":"packages/adapter-firebase"},"homepage":"https://github.com/yourusername/dial8-onboard#readme","bugs":{"url":"https://github.com/yourusername/dial8-onboard/issues"},"main":"dist/index.js","module":"dist/index.mjs","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js","types":"./dist/index.d.ts"}},"types":"dist/index.d.ts","scripts":{"build":"tsup src/index.ts --format cjs,esm","dev":"tsup src/index.ts --format cjs,esm --dts --watch","clean":"rm -rf dist","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"peerDependencies":{"firebase":"^10.0.0"},"dependencies":{"@dial8/onboard":"file:../core"},"devDependencies":{"firebase":"^10.0.0","null-loader":"^4.0.1","tsup":"^7.0.0","typescript":"^5.0.0"},"_id":"@dial8/onboard-adapter-firebase@0.1.4","gitHead":"0492e8db1c426866e02c0110a6a6361f2690da69","_nodeVersion":"20.9.0","_npmVersion":"10.2.4","dist":{"integrity":"sha512-rm59PGdLYR3NK8TjXvmgoKCoICKZObols3t1Lh5YLH8Yz94U2MixHLzwgtnnuiKLKO5PJnXU/ar/dLbB6vAbbQ==","shasum":"7d9f40c16370c3ca401d02a7971c172f7bb26eb4","tarball":"https://registry.npmjs.org/@dial8/onboard-adapter-firebase/-/onboard-adapter-firebase-0.1.4.tgz","fileCount":4,"unpackedSize":11981,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEZQTKfhJwv8fqffaovDSJxcT4qD0nXQArPLDVX/T1rzAiArYgbFju99198ly41Hwxs32ZjiI0C4tDDLZZPnWY91Ag=="}]},"_npmUser":{"name":"dial8","email":"dial8tech@gmail.com"},"directories":{},"maintainers":[{"name":"dial8","email":"dial8tech@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/onboard-adapter-firebase_0.1.4_1754774812509_0.8101821822511943"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-09T19:28:45.813Z","modified":"2025-08-09T21:26:52.915Z","0.1.0":"2025-08-09T19:28:46.050Z","0.1.1":"2025-08-09T20:26:40.804Z","0.1.2":"2025-08-09T20:27:16.832Z","0.1.3":"2025-08-09T20:44:48.903Z","0.1.4":"2025-08-09T21:26:52.742Z"},"bugs":{"url":"https://github.com/yourusername/dial8-onboard/issues"},"author":{"name":"Your Name","email":"your.email@example.com"},"license":"MIT","homepage":"https://github.com/yourusername/dial8-onboard#readme","keywords":["react","firebase","auth","authentication","adapter","onboarding"],"repository":{"type":"git","url":"git+https://github.com/yourusername/dial8-onboard.git","directory":"packages/adapter-firebase"},"description":"Firebase authentication adapter for Dial8 Onboard library","maintainers":[{"name":"dial8","email":"dial8tech@gmail.com"}],"readme":"# @dial8/onboard-adapter-firebase\n\nFirebase authentication adapter for [@dial8/onboard](https://www.npmjs.com/package/@dial8/onboard).\n\n## Features\n\n- 🔥 **Firebase Integration** - Official Firebase Auth SDK\n- ✉️ **Email/Password Auth** - Built-in email authentication\n- 🔐 **Secure** - Firebase's enterprise-grade security\n- ⚡ **Real-time** - Live auth state updates\n- 🎯 **TypeScript** - Full type safety\n- 🚀 **Easy Setup** - Simple configuration\n\n## Installation\n\n```bash\nnpm install @dial8/onboard @dial8/onboard-adapter-firebase firebase\n```\n\n## Quick Start\n\n```tsx\nimport { OnboardingFlow } from \"@dial8/onboard\";\nimport { MinimalTemplate } from \"@dial8/onboard-template-minimal\";\nimport { firebaseAdapter } from \"@dial8/onboard-adapter-firebase\";\n\nconst firebaseConfig = {\n  apiKey: \"your-api-key\",\n  authDomain: \"your-project.firebaseapp.com\", \n  projectId: \"your-project-id\",\n  storageBucket: \"your-project.appspot.com\",\n  messagingSenderId: \"123456789\",\n  appId: \"your-app-id\"\n};\n\nfunction App() {\n  return (\n    <OnboardingFlow\n      template={MinimalTemplate}\n      adapter={firebaseAdapter(firebaseConfig)}\n      steps={[\"signInOrUp\", \"verifyEmail\", \"profile\", \"success\"]}\n    />\n  );\n}\n```\n\n## Firebase Setup\n\n### 1. Create Firebase Project\n\n1. Go to [Firebase Console](https://console.firebase.google.com/)\n2. Create a new project or select existing one\n3. Add a web app to your project\n\n### 2. Enable Authentication\n\n1. Navigate to **Authentication** in the Firebase console\n2. Go to **Sign-in method** tab\n3. Enable **Email/Password** provider\n4. Optionally enable **Email link (passwordless sign-in)**\n\n### 3. Get Configuration\n\n1. Go to **Project Settings** > **General**\n2. Scroll to **Your apps** section\n3. Copy the Firebase configuration object\n\n```javascript\nconst firebaseConfig = {\n  apiKey: \"AIza...\",\n  authDomain: \"your-project.firebaseapp.com\",\n  projectId: \"your-project\", \n  storageBucket: \"your-project.appspot.com\",\n  messagingSenderId: \"123456789\",\n  appId: \"1:123:web:abc123\"\n};\n```\n\n## Configuration Options\n\n```tsx\nimport { firebaseAdapter } from \"@dial8/onboard-adapter-firebase\";\n\nconst adapter = firebaseAdapter({\n  // Required Firebase config\n  apiKey: \"your-api-key\",\n  authDomain: \"your-project.firebaseapp.com\",\n  projectId: \"your-project-id\",\n  \n  // Optional Firebase config  \n  storageBucket: \"your-project.appspot.com\",\n  messagingSenderId: \"123456789\", \n  appId: \"your-app-id\",\n  measurementId: \"G-ABC123DEF4\"\n});\n```\n\n## Supported Auth Methods\n\n### Email/Password Authentication\n- User registration with email and password\n- User sign-in with email and password\n- Automatic user session management\n- Password reset flows (coming soon)\n\n### Real-time Auth State\n- Automatic auth state synchronization\n- Immediate updates when user signs in/out\n- Persistent sessions across page reloads\n\n## User Object\n\nThe adapter returns a standardized user object:\n\n```tsx\ninterface User {\n  uid: string;                    // Firebase user ID\n  email: string | null;           // User email\n  displayName: string | null;     // Display name\n  photoURL: string | null;        // Profile photo URL\n}\n```\n\n## Usage with Auth Context\n\n```tsx\nimport { AuthProvider, useAuth } from \"@dial8/onboard\";\nimport { firebaseAdapter } from \"@dial8/onboard-adapter-firebase\";\n\nfunction App() {\n  return (\n    <AuthProvider adapter={firebaseAdapter(firebaseConfig)}>\n      <AppContent />\n    </AuthProvider>\n  );\n}\n\nfunction AppContent() {\n  const { user, signOut, isLoading } = useAuth();\n  \n  if (isLoading) return <div>Loading...</div>;\n  \n  return (\n    <div>\n      {user ? (\n        <div>\n          Welcome {user.email}!\n          <button onClick={signOut}>Sign Out</button>\n        </div>\n      ) : (\n        <OnboardingFlow\n          adapter={firebaseAdapter(firebaseConfig)}\n          // ... other props\n        />\n      )}\n    </div>\n  );\n}\n```\n\n## Error Handling\n\nThe adapter handles common Firebase authentication errors:\n\n- `auth/user-not-found` - No user found with this email\n- `auth/wrong-password` - Incorrect password\n- `auth/email-already-in-use` - Email already registered\n- `auth/weak-password` - Password too weak\n- `auth/invalid-email` - Invalid email format\n\n## TypeScript\n\nFull TypeScript support with proper types:\n\n```tsx\nimport type { FirebaseAdapterConfig } from \"@dial8/onboard-adapter-firebase\";\n\nconst config: FirebaseAdapterConfig = {\n  apiKey: \"your-api-key\",\n  // ... other config options\n};\n```\n\n## Security Rules\n\nMake sure to set up proper Firestore security rules if you're using Firestore:\n\n```javascript\n// Firestore Security Rules\nrules_version = '2';\nservice cloud.firestore {\n  match /databases/{database}/documents {\n    // Users can read/write their own data\n    match /users/{userId} {\n      allow read, write: if request.auth != null && request.auth.uid == userId;\n    }\n  }\n}\n```\n\n## Environment Variables\n\nFor security, store your Firebase config in environment variables:\n\n```bash\n# .env.local\nNEXT_PUBLIC_FIREBASE_API_KEY=your-api-key\nNEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com\nNEXT_PUBLIC_FIREBASE_PROJECT_ID=your-project-id\n```\n\n```tsx\nconst firebaseConfig = {\n  apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY,\n  authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN,\n  projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID,\n  // ... other config\n};\n```\n\n## Dependencies\n\n- Firebase SDK 10+\n- @dial8/onboard (peer dependency)\n\n## Related Packages\n\n- [@dial8/onboard](https://www.npmjs.com/package/@dial8/onboard) - Core onboarding library\n- [@dial8/onboard-template-minimal](https://www.npmjs.com/package/@dial8/onboard-template-minimal) - Minimal template\n- [Firebase](https://www.npmjs.com/package/firebase) - Firebase SDK\n\n## Creating Custom Adapters\n\nWant to integrate with a different auth provider? Create a custom adapter:\n\n```tsx\nimport { AuthAdapter, User } from '@dial8/onboard';\n\nexport function myAuthAdapter(config): AuthAdapter {\n  return {\n    async getSession(): Promise<User | null> {\n      // Return current authenticated user or null\n    },\n    \n    async signInEmailPassword(email: string, password: string): Promise<User> {\n      // Implement sign in logic\n    },\n    \n    async signUpEmailPassword(email: string, password: string): Promise<User> {\n      // Implement sign up logic  \n    },\n    \n    async signOut(): Promise<void> {\n      // Implement sign out logic\n    },\n    \n    onAuthStateChanged(callback: (user: User | null) => void): () => void {\n      // Set up real-time auth state listener\n      // Return unsubscribe function\n    }\n  };\n}\n```\n\n## License\n\nMIT\n\n## Support\n\n- [GitHub Issues](https://github.com/yourusername/dial8-onboard/issues)\n- [Firebase Documentation](https://firebase.google.com/docs/auth)\n- [Firebase Console](https://console.firebase.google.com/)","readmeFilename":"README.md"}