{"_id":"@bailierich/booking-components","_rev":"7-002b019f8241c6a31950344ea666ae73","name":"@bailierich/booking-components","dist-tags":{"latest":"2.2.0"},"versions":{"2.0.0":{"name":"@bailierich/booking-components","version":"2.0.0","keywords":["booking","appointments","react","components","oviah"],"author":{"name":"OVIAH"},"license":"UNLICENSED","_id":"@bailierich/booking-components@2.0.0","maintainers":[{"name":"bailierich","email":"browngirldev@gmail.com"}],"homepage":"https://github.com/bailierich/oviah-saas-dashboard#readme","bugs":{"url":"https://github.com/bailierich/oviah-saas-dashboard/issues"},"dist":{"shasum":"101e837e1759d2803d3b954ea4634a4feba3e5ce","tarball":"https://registry.npmjs.org/@bailierich/booking-components/-/booking-components-2.0.0.tgz","fileCount":83,"integrity":"sha512-gplX8dJscj3rEtSBhHKn71RPV2TRV0HRqoaITytd025whLEY3Fdxup/PTD4fS6K3CDV2Cz6ji8kMSBd6OD4RBA==","signatures":[{"sig":"MEQCIG3F3jCuNrIciN+cnMDbhqlZL5sce23uagFbtLwxhr2yAiAncoWXLn00EZl1sfAIvtO5w7DTm1gvrJAURobEezCVFQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2329326},"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"},"./styles":{"types":"./dist/styles/index.d.ts","import":"./dist/styles/index.mjs","require":"./dist/styles/index.js"}},"gitHead":"5f0fcd50970bf1dc3f0a0414acde5c32b3453963","scripts":{"dev":"tsup --watch","build":"tsup","type-check":"tsc --noEmit"},"_npmUser":{"name":"bailierich","email":"browngirldev@gmail.com"},"repository":{"url":"git+https://github.com/bailierich/oviah-saas-dashboard.git","type":"git","directory":"packages/booking-components"},"_npmVersion":"10.9.2","description":"Shared booking flow components for OVIAH platform","directories":{},"_nodeVersion":"23.9.0","dependencies":{"clsx":"^2.1.1","lucide-react":"^0.542.0","framer-motion":"^12.23.24","@supabase/supabase-js":"^2.39.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5","@types/react":"^19","@types/react-dom":"^19"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/booking-components_2.0.0_1772425229276_0.46356610363754713","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@bailierich/booking-components","version":"2.1.0","keywords":["booking","appointments","react","components","oviah"],"author":{"name":"OVIAH"},"license":"UNLICENSED","_id":"@bailierich/booking-components@2.1.0","maintainers":[{"name":"bailierich","email":"browngirldev@gmail.com"}],"homepage":"https://github.com/bailierich/oviah-saas-dashboard#readme","bugs":{"url":"https://github.com/bailierich/oviah-saas-dashboard/issues"},"dist":{"shasum":"037eaafedbb24eec948a5a6a17294ed4c89608b5","tarball":"https://registry.npmjs.org/@bailierich/booking-components/-/booking-components-2.1.0.tgz","fileCount":83,"integrity":"sha512-FNX3dhLVJw73SbMkjdzjcv0SbOtGARnqQFY0dwwZ+o+xErUBSo5M3PF7WZZRyA0yUN7DejIq9nL3W+reOWm6QA==","signatures":[{"sig":"MEUCIQC2ce1uC1Zm2KB71z/nsitwmuYZ3e1Cm7x4hqU9BO8ZVAIgfB22RVVtKgXgyCUSyVPBX0sOxwlW6FfdElj4twPgLwk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2336086},"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"},"./styles":{"types":"./dist/styles/index.d.ts","import":"./dist/styles/index.mjs","require":"./dist/styles/index.js"}},"gitHead":"5f0fcd50970bf1dc3f0a0414acde5c32b3453963","scripts":{"dev":"tsup --watch","build":"tsup","type-check":"tsc --noEmit"},"_npmUser":{"name":"bailierich","email":"browngirldev@gmail.com"},"repository":{"url":"git+https://github.com/bailierich/oviah-saas-dashboard.git","type":"git","directory":"packages/booking-components"},"_npmVersion":"10.9.2","description":"Shared booking flow components for OVIAH platform","directories":{},"_nodeVersion":"23.9.0","dependencies":{"clsx":"^2.1.1","lucide-react":"^0.542.0","framer-motion":"^12.23.24","@supabase/supabase-js":"^2.39.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5","@types/react":"^19","@types/react-dom":"^19"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/booking-components_2.1.0_1772481477806_0.983539856547156","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"@bailierich/booking-components","version":"2.1.1","keywords":["booking","appointments","react","components","oviah"],"author":{"name":"OVIAH"},"license":"UNLICENSED","_id":"@bailierich/booking-components@2.1.1","maintainers":[{"name":"bailierich","email":"browngirldev@gmail.com"}],"homepage":"https://github.com/bailierich/oviah-saas-dashboard#readme","bugs":{"url":"https://github.com/bailierich/oviah-saas-dashboard/issues"},"dist":{"shasum":"be91e7f8661d7bc7d42985c249fa6d1b715d2391","tarball":"https://registry.npmjs.org/@bailierich/booking-components/-/booking-components-2.1.1.tgz","fileCount":83,"integrity":"sha512-AiVcVXwfOCOGc+p0cnniUG/d17JHfmAqzQuVClPKbLR+KOAiUHQZWZooEfO8OH88v9Mbp7qisXWnSO8SYUIgbQ==","signatures":[{"sig":"MEUCIQDwUYlOWnoBJJRx24mJmAuqSJ8r9OvrsuHm+j+g8WtJKAIgJnDfqxhCsKKQQPe4mooY7hNDK3JCFhmyk3SB02U9A44=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2336622},"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"},"./styles":{"types":"./dist/styles/index.d.ts","import":"./dist/styles/index.mjs","require":"./dist/styles/index.js"}},"gitHead":"5f0fcd50970bf1dc3f0a0414acde5c32b3453963","scripts":{"dev":"tsup --watch","build":"tsup","type-check":"tsc --noEmit"},"_npmUser":{"name":"bailierich","email":"browngirldev@gmail.com"},"repository":{"url":"git+https://github.com/bailierich/oviah-saas-dashboard.git","type":"git","directory":"packages/booking-components"},"_npmVersion":"10.9.2","description":"Shared booking flow components for OVIAH platform","directories":{},"_nodeVersion":"23.9.0","dependencies":{"clsx":"^2.1.1","lucide-react":"^0.542.0","framer-motion":"^12.23.24","@supabase/supabase-js":"^2.39.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5","@types/react":"^19","@types/react-dom":"^19"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/booking-components_2.1.1_1772589927091_0.628061578023178","host":"s3://npm-registry-packages-npm-production"}},"2.1.2":{"name":"@bailierich/booking-components","version":"2.1.2","keywords":["booking","appointments","react","components","oviah"],"author":{"name":"OVIAH"},"license":"UNLICENSED","_id":"@bailierich/booking-components@2.1.2","maintainers":[{"name":"bailierich","email":"browngirldev@gmail.com"}],"homepage":"https://github.com/bailierich/oviah-saas-dashboard#readme","bugs":{"url":"https://github.com/bailierich/oviah-saas-dashboard/issues"},"dist":{"shasum":"6650035034fffc76caa8dcbbe5c50993e96551e7","tarball":"https://registry.npmjs.org/@bailierich/booking-components/-/booking-components-2.1.2.tgz","fileCount":77,"integrity":"sha512-gUZ9EG0JZhbKRMVUig+ir4rb4OtaGCaXPbtmJ8nu7ryv1/o3Q+9RZc739sppGIMB4Ji3QBZAAgocUr1yfwwMZg==","signatures":[{"sig":"MEUCIHSKoLbBVzIAxjtwspc2rIJU8xbXrd1ywbMayj+5RchjAiEA2F1Ve9JeqTFkgJPolJIW54VqYGKNLAablf/j29A4gSQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2239079},"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"},"./styles":{"types":"./dist/styles/index.d.ts","import":"./dist/styles/index.mjs","require":"./dist/styles/index.js"}},"gitHead":"7521a1db0e13a631a4b9017c4c839327d5152b5b","scripts":{"dev":"tsup --watch","build":"tsup","type-check":"tsc --noEmit"},"_npmUser":{"name":"bailierich","email":"browngirldev@gmail.com"},"repository":{"url":"git+https://github.com/bailierich/oviah-saas-dashboard.git","type":"git","directory":"packages/booking-components"},"_npmVersion":"10.9.2","description":"Shared booking flow components for OVIAH platform","directories":{},"_nodeVersion":"23.9.0","dependencies":{"clsx":"^2.1.1","lucide-react":"^0.542.0","framer-motion":"^12.23.24","@supabase/supabase-js":"^2.39.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5","@types/react":"^19","@types/react-dom":"^19"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/booking-components_2.1.2_1773177555408_0.9503251932266141","host":"s3://npm-registry-packages-npm-production"}},"2.1.3":{"name":"@bailierich/booking-components","version":"2.1.3","keywords":["booking","appointments","react","components","oviah"],"author":{"name":"OVIAH"},"license":"UNLICENSED","_id":"@bailierich/booking-components@2.1.3","maintainers":[{"name":"bailierich","email":"browngirldev@gmail.com"}],"homepage":"https://github.com/bailierich/oviah-saas-dashboard#readme","bugs":{"url":"https://github.com/bailierich/oviah-saas-dashboard/issues"},"dist":{"shasum":"b723530c491ac3da0bb3d78ad3fa3194cd071d64","tarball":"https://registry.npmjs.org/@bailierich/booking-components/-/booking-components-2.1.3.tgz","fileCount":77,"integrity":"sha512-GeFMd4LlNP/aIlEMXsJ3BC6bCRueU0xLBmrGhH1VXh9kdQ808qwnECehPpxgLAPjs9FRfVihTECVEecD0FWGww==","signatures":[{"sig":"MEUCIQDh9Agbni2RHvwMgfSM4iYIpA74cUk5K32vAM2UAqPHLgIgEc2C2f19TQTUbJcnnTUJLXp3AdIiERmpTbAhSHDh2vU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2239420},"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"},"./styles":{"types":"./dist/styles/index.d.ts","import":"./dist/styles/index.mjs","require":"./dist/styles/index.js"}},"gitHead":"e8a779a117c583e7b5068bc5aad435c40cf7beb4","scripts":{"dev":"tsup --watch","build":"tsup","type-check":"tsc --noEmit"},"_npmUser":{"name":"bailierich","email":"browngirldev@gmail.com"},"repository":{"url":"git+https://github.com/bailierich/oviah-saas-dashboard.git","type":"git","directory":"packages/booking-components"},"_npmVersion":"10.9.2","description":"Shared booking flow components for OVIAH platform","directories":{},"_nodeVersion":"23.9.0","dependencies":{"clsx":"^2.1.1","lucide-react":"^0.542.0","framer-motion":"^12.23.24","@supabase/supabase-js":"^2.39.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5","@types/react":"^19","@types/react-dom":"^19"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/booking-components_2.1.3_1774476406734_0.6284925463479094","host":"s3://npm-registry-packages-npm-production"}},"2.1.4":{"name":"@bailierich/booking-components","version":"2.1.4","keywords":["booking","appointments","react","components","oviah"],"author":{"name":"OVIAH"},"license":"UNLICENSED","_id":"@bailierich/booking-components@2.1.4","maintainers":[{"name":"bailierich","email":"browngirldev@gmail.com"}],"homepage":"https://github.com/bailierich/oviah-saas-dashboard#readme","bugs":{"url":"https://github.com/bailierich/oviah-saas-dashboard/issues"},"dist":{"shasum":"49deb4548756f4b96a1c3da7d706ed180208b048","tarball":"https://registry.npmjs.org/@bailierich/booking-components/-/booking-components-2.1.4.tgz","fileCount":77,"integrity":"sha512-dHoYAGLKUJ5AE69Z/WMxBUL2lZloiKsurSG7jJw8c1leMRfjWcSMvC0VUBp8+ysub9ByVMfMAZyFoUPs90YY2g==","signatures":[{"sig":"MEYCIQCQL/dtzbxXNxU7g53p7Xb04SXzKjXFY8duUZBBNnkvxAIhAMklxLhk6+TJ4tP77V0Fi2x0CpUYxRCfEKHpPqD69ZzN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2248703},"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"},"./styles":{"types":"./dist/styles/index.d.ts","import":"./dist/styles/index.mjs","require":"./dist/styles/index.js"}},"gitHead":"895a3f1bcf0a9fa7e572c15776532ab2126d9dd5","scripts":{"dev":"tsup --watch","build":"tsup","type-check":"tsc --noEmit"},"_npmUser":{"name":"bailierich","email":"browngirldev@gmail.com"},"repository":{"url":"git+https://github.com/bailierich/oviah-saas-dashboard.git","type":"git","directory":"packages/booking-components"},"_npmVersion":"10.9.2","description":"Shared booking flow components for OVIAH platform","directories":{},"_nodeVersion":"23.9.0","dependencies":{"clsx":"^2.1.1","lucide-react":"^0.542.0","framer-motion":"^12.23.24","@supabase/supabase-js":"^2.39.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5","@types/react":"^19","@types/react-dom":"^19"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/booking-components_2.1.4_1774497050970_0.2961010101962547","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@bailierich/booking-components","version":"2.2.0","description":"Shared booking flow components for OVIAH platform","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/bailierich/oviah-saas-dashboard.git","directory":"packages/booking-components"},"publishConfig":{"registry":"https://registry.npmjs.org","access":"public"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./styles":{"types":"./dist/styles/index.d.ts","import":"./dist/styles/index.mjs","require":"./dist/styles/index.js"}},"scripts":{"build":"tsup","dev":"tsup --watch","type-check":"tsc --noEmit"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"dependencies":{"framer-motion":"^12.23.24","lucide-react":"^0.542.0","clsx":"^2.1.1","@supabase/supabase-js":"^2.39.0"},"devDependencies":{"@types/react":"^19","@types/react-dom":"^19","typescript":"^5","tsup":"^8.0.0"},"keywords":["booking","appointments","react","components","oviah"],"author":{"name":"OVIAH"},"license":"UNLICENSED","_id":"@bailierich/booking-components@2.2.0","gitHead":"7a7cc6eafa85685373ed703a38fc8679b5db75ce","bugs":{"url":"https://github.com/bailierich/oviah-saas-dashboard/issues"},"homepage":"https://github.com/bailierich/oviah-saas-dashboard#readme","_nodeVersion":"23.9.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-jUydzqoGBCewIs8Q7zptXilGQtmRtuopODefcVSaXItX/8hgy6e+xOXUzGgWSErrAmarWUA5FBLKOTZ5yFsK1Q==","shasum":"e3f008a87898a0fc14a3d9c38ad3871bd7e6a5b9","tarball":"https://registry.npmjs.org/@bailierich/booking-components/-/booking-components-2.2.0.tgz","fileCount":77,"unpackedSize":2268024,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAsvOv60eXGHyKnmZuudN1W3GrpmW66sIBtPRCJkU2joAiEAp1jVJ6xc6oUv19G2E+MuFPpkiIRq5PoMpojfGfgfWgA="}]},"_npmUser":{"name":"bailierich","email":"browngirldev@gmail.com"},"directories":{},"maintainers":[{"name":"bailierich","email":"browngirldev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/booking-components_2.2.0_1775957474444_0.48726862897975987"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-02T04:20:29.195Z","modified":"2026-04-12T01:31:14.797Z","2.0.0":"2026-03-02T04:20:29.471Z","2.1.0":"2026-03-02T19:57:58.062Z","2.1.1":"2026-03-04T02:05:27.312Z","2.1.2":"2026-03-10T21:19:15.566Z","2.1.3":"2026-03-25T22:06:46.995Z","2.1.4":"2026-03-26T03:50:51.192Z","2.2.0":"2026-04-12T01:31:14.682Z"},"bugs":{"url":"https://github.com/bailierich/oviah-saas-dashboard/issues"},"author":{"name":"OVIAH"},"license":"UNLICENSED","homepage":"https://github.com/bailierich/oviah-saas-dashboard#readme","keywords":["booking","appointments","react","components","oviah"],"repository":{"type":"git","url":"git+https://github.com/bailierich/oviah-saas-dashboard.git","directory":"packages/booking-components"},"description":"Shared booking flow components for OVIAH platform","maintainers":[{"name":"bailierich","email":"browngirldev@gmail.com"}],"readme":"# @oviah/booking-components\n\nReusable booking and section components for the OVIAH multi-tenant booking platform.\n\n## 📦 What's Included\n\n- **21 Section Components** - Logo, Hero, Gallery, Testimonials, and more\n- **Complete Booking Flow** - Multi-step booking with validation and animations\n- **Universal Renderers** - SectionRenderer and BookingFlow orchestrator\n- **UI Components** - BottomSheet, modals, and form elements\n- **Animation Utilities** - Pre-built Framer Motion animations\n- **Full TypeScript Support** - Complete type definitions\n\n## 🚀 Quick Start\n\n```tsx\nimport {\n  SectionRenderer,\n  BookingFlow,\n  Hero,\n  Gallery\n} from '@oviah/booking-components';\n\n// Render any section dynamically\n<SectionRenderer\n  section={{\n    id: 'hero-1',\n    type: 'hero',\n    settings: {\n      headline: 'Welcome',\n      subheadline: 'Book your appointment today'\n    }\n  }}\n  theme={{\n    colors: { primary: '#D8C4FF', secondary: '#014421', text: '#000000' },\n    typography: { headingFont: 'Geist Sans' }\n  }}\n/>\n\n// Complete booking flow\n<BookingFlow\n  config={config}\n  colors={colors}\n  services={services}\n  onComplete={(bookingData) => {\n    console.log('Booking complete!', bookingData);\n  }}\n/>\n```\n\n## 📚 Documentation\n\n- **[API Reference](./docs/API.md)** - Complete component API\n- **[Data Shapes](./docs/DATA_SHAPES.md)** - Data structures and interfaces\n- **[Callbacks](./docs/CALLBACKS.md)** - Event handling patterns\n- **[Styling](./docs/STYLING.md)** - Theme customization guide\n- **[Payment Integration](./docs/PAYMENT_INTEGRATION.md)** - Payment setup guide\n- **[Migration Guide](./docs/MIGRATION.md)** - Migrate from inline components\n\n## 🎨 Components\n\n### Section Components (21 total)\n\nAll section components accept `colors` and `typography` props for theming:\n\n- **Logo** - Logo/brand mark display\n- **Header** - Text header with name, title, bio\n- **FeaturedLink** - Large CTA button\n- **LinkList** - List of clickable links\n- **SocialBar** - Social media icons\n- **InstagramFeed** - Instagram grid\n- **MinimalHeader** - Sticky header\n- **MinimalNavigation** - Navigation links\n- **MinimalFooter** - Footer section\n- **FeatureContent** - Feature with image/text\n- **Hero** - Hero section with image\n- **About** - About section\n- **ServicesPreview** - Services grid/list\n- **Gallery** - Image gallery\n- **Testimonials** - Client testimonials\n- **Team** - Team members\n- **Contact** - Contact info/form\n- **BeforeAfter** - Before/after comparisons\n- **PricingTable** - Pricing plans\n- **BookingSection** - Booking flow wrapper\n- **FixedInfoCard** - Fixed corner card\n\n### Booking Flow Components\n\n- **BookingFlow** - Main orchestrator\n- **ServiceSelection** - Service picker\n- **DateSelection** - Date picker\n- **TimeSelection** - Time slot picker\n- **AddonsSelection** - Add-ons picker\n- **ContactForm** - Contact information\n- **Confirmation** - Review and payment\n\n### UI Components\n\n- **BottomSheet** - Slide-up modal\n- **SectionRenderer** - Universal section renderer\n\n### Animation Utilities\n\n- `createEntranceAnimation()` - Entry animations\n- `createStaggerAnimation()` - Stagger lists\n- `getSlideVariants()` - Slide transitions\n- `getFadeVariants()` - Fade transitions\n\n## 🔧 Installation\n\n### For This Project (stylink-saas-dashboard)\n\nThis package is part of the workspace and is automatically linked:\n\n```bash\nnpm install\n```\n\n### For Your Tenant Template Project\n\nYou have **three options** to use this package in your other project:\n\n#### Option 1: Local Link (Best for Active Development)\n\n**Step 1 - In this project:**\n```bash\ncd packages/booking-components\nnpm run build\nnpm link\n```\n\n**Step 2 - In your tenant template project:**\n```bash\nnpm link @oviah/booking-components\n```\n\n**To unlink later:**\n```bash\nnpm unlink @oviah/booking-components\nnpm install\n```\n\n#### Option 2: File Path (Best for Local Development)\n\n**In your tenant template's package.json:**\n```json\n{\n  \"dependencies\": {\n    \"@oviah/booking-components\": \"file:../stylink-saas-dashboard/packages/booking-components\"\n  }\n}\n```\n\nThen run:\n```bash\nnpm install\n```\n\n**Note:** Adjust the path based on where your projects are located relative to each other.\n\n#### Option 3: GitHub Packages (Best for Production)\n\n**Step 1 - Update this package's package.json:**\n```json\n{\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/YOUR_ORG/stylink-saas-dashboard.git\",\n    \"directory\": \"packages/booking-components\"\n  },\n  \"publishConfig\": {\n    \"registry\": \"https://npm.pkg.github.com\"\n  }\n}\n```\n\n**Step 2 - Create .npmrc in packages/booking-components:**\n```\n@oviah:registry=https://npm.pkg.github.com\n//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}\n```\n\n**Step 3 - Build and publish:**\n```bash\ncd packages/booking-components\nnpm run build\nnpm publish\n```\n\n**Step 4 - In your tenant template, create .npmrc:**\n```\n@oviah:registry=https://npm.pkg.github.com\n//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}\n```\n\n**Step 5 - Install:**\n```bash\nnpm install @oviah/booking-components@1.0.0\n```\n\n## 💡 Usage Examples\n\n### Render Sections Dynamically\n\n```tsx\nconst sections = [\n  { id: '1', type: 'logo', settings: { logoUrl: '/logo.png' } },\n  { id: '2', type: 'hero', settings: { headline: 'Welcome' } },\n  { id: '3', type: 'gallery', settings: { images: [...] } }\n];\n\n{sections.map(section => (\n  <SectionRenderer\n    key={section.id}\n    section={section}\n    theme={theme}\n  />\n))}\n```\n\n### Complete Booking Flow\n\n```tsx\n<BookingFlow\n  config={{\n    steps: {\n      service_selection: { enabled: true, settings: {...} },\n      date_selection: { enabled: true, settings: {...} },\n      time_selection: { enabled: true, settings: {...} },\n      contact_form: { enabled: true, settings: {...} }\n    },\n    progressBar: { style: 'dots' },\n    transitions: { style: 'slide', speed: 'normal' }\n  }}\n  colors={{\n    primary: '#D8C4FF',\n    secondary: '#014421',\n    text: '#000000'\n  }}\n  services={services}\n  dates={availableDates}\n  times={availableTimes}\n  onComplete={(bookingData) => {\n    // Handle booking submission\n  }}\n/>\n```\n\n### Individual Components\n\n```tsx\nimport { Hero, Gallery, Testimonials } from '@oviah/booking-components';\n\n<Hero\n  headline=\"Welcome to Our Salon\"\n  subheadline=\"Professional beauty services\"\n  heroImage=\"/hero.jpg\"\n  ctaButton={{ text: 'Book Now', url: '/book' }}\n  layout=\"split\"\n  colors={{ primary: '#D8C4FF', text: '#000000' }}\n  typography={{ headingFont: 'Geist Sans' }}\n/>\n\n<Gallery\n  title=\"Our Work\"\n  images={galleryImages}\n  columns={3}\n  colors={{ primary: '#D8C4FF', text: '#000000' }}\n  typography={{ headingFont: 'Geist Sans' }}\n/>\n\n<Testimonials\n  title=\"What Clients Say\"\n  testimonials={testimonials}\n  layout=\"grid\"\n  colors={{ primary: '#D8C4FF', text: '#000000' }}\n  typography={{ headingFont: 'Geist Sans' }}\n/>\n```\n\n## 🎯 Key Features\n\n### ✅ Type-Safe\n\nFull TypeScript support with complete type definitions:\n\n```typescript\nimport type {\n  Section,\n  BookingFlowConfig,\n  ColorScheme,\n  TypographyConfig\n} from '@oviah/booking-components';\n```\n\n### ✅ Themeable\n\nAll components accept consistent color and typography props.\n\n### ✅ Responsive\n\nMobile-first design with automatic breakpoints.\n\n### ✅ Accessible\n\nSemantic HTML, ARIA labels, keyboard navigation, screen reader support.\n\n### ✅ Animated\n\nSmooth animations with Framer Motion that respect `prefers-reduced-motion`.\n\n## 🤝 Contributing\n\nThis is a private package for the OVIAH platform. For internal use only.\n\n## 📝 License\n\nUNLICENSED - Private package for OVIAH\n","readmeFilename":"README.md"}