@insforge/nextjs 0.4.0 → 0.6.5

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/styles.css"],"sourcesContent":["/**\r\n * InsForge Next.js Component Library Styles\r\n * A standalone CSS file for auth components - no Tailwind required!\r\n */\r\n\r\n/* Font Face Declaration */\r\n@font-face {\r\n font-family: 'Manrope';\r\n src: url('./fonts/Manrope-VariableFont_wght.ttf') format('truetype');\r\n font-weight: 100 900;\r\n font-style: normal;\r\n font-display: swap;\r\n}\r\n\r\n/* CSS Variables */\r\n:root {\r\n --font-manrope: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\r\n}\r\n\r\n/* Reset and Base Styles */\r\n.insforge-auth-container * {\r\n box-sizing: border-box;\r\n}\r\n\r\n/* Main Container - App handles layout, we just provide the card */\r\n.insforge-auth-container {\r\n width: 100%;\r\n max-width: 400px;\r\n background: white;\r\n}\r\n\r\n.insforge-branding {\r\n padding: 8px 8px 16px 8px;\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: center;\r\n align-items: center;\r\n gap: 4px;\r\n}\r\n\r\n.insforge-branding-text {\r\n color: var(--black, #000);\r\n font-family: var(--font-manrope);\r\n font-size: 12px;\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: normal;\r\n}\r\n\r\n/* Form Card */\r\n.insforge-auth-card {\r\n width: 100%;\r\n border-radius: 12px;\r\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.25);\r\n}\r\n\r\n.insforge-auth-content {\r\n padding: 24px 24px 40px 24px;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: stretch;\r\n gap: 24px;\r\n}\r\n\r\n/* Header */\r\n.insforge-auth-header {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: start;\r\n align-items: start;\r\n gap: 8px;\r\n}\r\n\r\n.insforge-auth-title {\r\n color: #000;\r\n font-family: Inter;\r\n font-size: 32px;\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: 48px;\r\n}\r\n\r\n.insforge-auth-subtitle {\r\n color: #828282;\r\n font-family: Inter;\r\n font-size: 14px;\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: 24px;\r\n}\r\n\r\n/* Error Banner */\r\n.insforge-error-banner {\r\n display: flex;\r\n align-items: center;\r\n gap: 0.75rem;\r\n padding: 1rem;\r\n margin-bottom: 1.5rem;\r\n background-color: #fef2f2;\r\n border: 1px solid #fecaca;\r\n border-radius: 0.5rem;\r\n color: #dc2626;\r\n font-size: 0.875rem;\r\n line-height: 1.25rem;\r\n}\r\n\r\n.insforge-error-icon {\r\n flex-shrink: 0;\r\n width: 1.25rem;\r\n height: 1.25rem;\r\n}\r\n\r\n/* Form Elements */\r\n.insforge-form {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: stretch;\r\n gap: 24px;\r\n}\r\n\r\n.insforge-form-group {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: stretch;\r\n gap: 4px;\r\n}\r\n\r\n.insforge-form-label-row {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n}\r\n\r\n.insforge-form-label {\r\n color: #000;\r\n font-family: Inter;\r\n font-size: 14px;\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: 24px;\r\n}\r\n\r\n.insforge-form-link {\r\n color: #828282;\r\n text-align: right;\r\n font-family: Inter;\r\n font-size: 14px;\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: 24px;\r\n}\r\n\r\n.insforge-form-link:hover {\r\n color: #828282;\r\n text-decoration: underline;\r\n}\r\n\r\n/* Input Container for Password (with icon) */\r\n.insforge-input-wrapper {\r\n position: relative;\r\n}\r\n\r\n.insforge-input {\r\n width: 100%;\r\n display: flex;\r\n padding: 8px 8px 10px 12px;\r\n align-items: center;\r\n gap: 8px;\r\n align-self: stretch;\r\n border-radius: 4px;\r\n border: 1px solid #BCBCBC;\r\n background: #FFF;\r\n font-family: Inter;\r\n font-size: 16px;\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: 20px;\r\n}\r\n\r\n.insforge-input::placeholder {\r\n color: #A6A6A6;\r\n}\r\n\r\n.insforge-input:focus {\r\n outline: none;\r\n}\r\n\r\n.insforge-input-with-icon {\r\n padding-right: 3rem;\r\n}\r\n\r\n.insforge-input-icon-btn {\r\n position: absolute;\r\n right: 8px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n background: transparent;\r\n border: none;\r\n color: #A6A6A6;\r\n cursor: pointer;\r\n transition: color 0.2s;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.insforge-input-icon-btn:hover {\r\n color: #6b7280;\r\n}\r\n\r\n/* Primary Button */\r\n.insforge-btn-primary {\r\n border-radius: 4px;\r\n background: #000;\r\n width: 100%;\r\n display: flex;\r\n padding: 12px 16px;\r\n justify-content: center;\r\n align-items: center;\r\n gap: 10px;\r\n align-self: stretch;\r\n color: #FFF;\r\n font-family: Manrope;\r\n font-size: 16px;\r\n font-style: normal;\r\n font-weight: 600;\r\n line-height: normal;\r\n border: none;\r\n cursor: pointer;\r\n}\r\n\r\n.insforge-btn-primary:hover {\r\n background: #303030;\r\n}\r\n\r\n.insforge-btn-primary:disabled {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n}\r\n\r\n.insforge-btn-primary .insforge-btn-loader {\r\n display: none;\r\n animation: insforge-spin 1s linear infinite;\r\n}\r\n\r\n.insforge-btn-primary[data-loading] .insforge-btn-loader {\r\n display: block;\r\n}\r\n\r\n/* Text Link Section */\r\n.insforge-text-center {\r\n text-align: center;\r\n margin: -12px 0 0 0;\r\n color: #828282;\r\n font-family: Inter;\r\n font-size: 14px;\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: 24px;\r\n}\r\n\r\n.insforge-link-primary {\r\n color: #2563EB;\r\n font-family: Inter;\r\n font-size: 14px;\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: 24px;\r\n}\r\n\r\n.insforge-link-primary:hover {\r\n text-decoration: underline;\r\n}\r\n\r\n/* Divider */\r\n.insforge-divider {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n gap: 24px;\r\n align-self: stretch;\r\n}\r\n\r\n.insforge-divider::before,\r\n.insforge-divider::after {\r\n content: '';\r\n flex: 1;\r\n height: 1px;\r\n background: #C6C6C6;\r\n}\r\n\r\n.insforge-divider-text {\r\n color: #C6C6C6;\r\n font-family: Manrope;\r\n font-size: 14px;\r\n font-style: normal;\r\n font-weight: 600;\r\n line-height: normal;\r\n}\r\n\r\n/* OAuth Section */\r\n.insforge-oauth-container {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: stretch;\r\n gap: 12px;\r\n}\r\n\r\n/* OAuth Button */\r\n.insforge-oauth-btn {\r\n display: flex;\r\n height: 36px;\r\n padding: 8px 12px;\r\n flex-direction: row;\r\n justify-content: center;\r\n align-items: center;\r\n gap: 12px;\r\n border-radius: 6px;\r\n border: 1px solid #E4E4E7;\r\n background: #FFF;\r\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.10);\r\n color: #09090B;\r\n text-align: center;\r\n font-family: Inter;\r\n font-size: 14px;\r\n font-style: normal;\r\n font-weight: 500;\r\n line-height: 20px;\r\n cursor: pointer;\r\n}\r\n\r\n.insforge-oauth-btn:hover {\r\n background: #f9fafb;\r\n border-color: #9ca3af;\r\n}\r\n\r\n.insforge-oauth-btn:disabled {\r\n opacity: 0.6;\r\n cursor: not-allowed;\r\n}\r\n\r\n.insforge-oauth-icon {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-shrink: 0;\r\n}\r\n\r\n.insforge-oauth-loader {\r\n display: none;\r\n animation: insforge-spin 1s linear infinite;\r\n}\r\n\r\n.insforge-oauth-btn[data-loading] .insforge-oauth-icon {\r\n display: none;\r\n}\r\n\r\n.insforge-oauth-btn[data-loading] .insforge-oauth-loader {\r\n display: block;\r\n}\r\n\r\n/* Spin Animation */\r\n@keyframes insforge-spin {\r\n from {\r\n transform: rotate(0deg);\r\n }\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n}\r\n\r\n/* UserButton Styles */\r\n.insforge-user-button-container {\r\n position: relative;\r\n display: inline-block;\r\n}\r\n\r\n.insforge-user-button {\r\n padding: 0.25rem;\r\n background: transparent;\r\n border: none;\r\n border-radius: 9999px;\r\n cursor: pointer;\r\n transition: all 0.2s;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n gap: 0.5rem;\r\n}\r\n\r\n.insforge-user-button:hover {\r\n background: rgba(0, 0, 0, 0.05);\r\n}\r\n\r\n.insforge-user-button-detailed {\r\n border-radius: 0.5rem;\r\n padding: 0.5rem;\r\n}\r\n\r\n.insforge-user-button-info {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n gap: 0.125rem;\r\n}\r\n\r\n.insforge-user-button-name {\r\n font-size: 0.875rem;\r\n font-weight: 600;\r\n color: #111827;\r\n line-height: 1.25rem;\r\n text-align: left;\r\n}\r\n\r\n.insforge-user-button-email {\r\n font-size: 0.75rem;\r\n color: #6b7280;\r\n line-height: 1rem;\r\n text-align: left;\r\n}\r\n\r\n.insforge-user-avatar {\r\n width: 2.5rem;\r\n height: 2.5rem;\r\n border-radius: 9999px;\r\n object-fit: cover;\r\n}\r\n\r\n.insforge-user-avatar-placeholder {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 2.5rem;\r\n height: 2.5rem;\r\n background: #3b82f6;\r\n color: white;\r\n font-weight: 600;\r\n font-size: 0.875rem;\r\n border-radius: 9999px;\r\n}\r\n\r\n.insforge-user-dropdown {\r\n position: absolute;\r\n top: 100%;\r\n right: 0;\r\n margin-top: 0.5rem;\r\n min-width: 10rem;\r\n background: white;\r\n border: 1px solid #e5e7eb;\r\n border-radius: 0.5rem;\r\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\r\n z-index: 50;\r\n overflow: hidden;\r\n padding: 0.25rem;\r\n}\r\n\r\n.insforge-sign-out-button {\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-start;\r\n gap: 0.5rem;\r\n width: 100%;\r\n padding: 0.5rem 0.75rem;\r\n font-size: 0.875rem;\r\n font-family: inherit;\r\n color: #dc2626;\r\n background: transparent;\r\n border: none;\r\n border-radius: 0.375rem;\r\n cursor: pointer;\r\n transition: background 0.2s;\r\n text-align: left;\r\n}\r\n\r\n.insforge-sign-out-button:hover {\r\n background: #fef2f2;\r\n}\r\n\r\n/* Loading State */\r\n.insforge-loading {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n padding: 2rem;\r\n color: #6b7280;\r\n font-size: 0.875rem;\r\n}\r\n\r\n/* Password Strength Indicator */\r\n.insforge-password-strength {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 0.25rem;\r\n margin-top: 0.5rem;\r\n}\r\n\r\n.insforge-password-requirement {\r\n height: 1.5rem;\r\n display: flex;\r\n align-items: center;\r\n gap: 0.25rem;\r\n}\r\n\r\n.insforge-password-check {\r\n width: 1.25rem;\r\n height: 1.25rem;\r\n border-radius: 9999px;\r\n display: flex;\r\n border-width: 2px;\r\n border-style: solid;\r\n align-items: center;\r\n justify-content: center;\r\n transition: all 0.2s ease-in-out;\r\n background-color: transparent;\r\n border-color: #a3a3a3;\r\n flex-shrink: 0;\r\n}\r\n\r\n.insforge-password-check-valid {\r\n background-color: #22c55e;\r\n border-color: transparent;\r\n}\r\n\r\n.insforge-password-check-icon {\r\n color: #fff;\r\n stroke-width: 3;\r\n}\r\n\r\n.insforge-password-requirement-label {\r\n color:#000;\r\n font-family: Inter;\r\n font-size: 14px;\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: 24px;\r\n}\r\n\r\n/* Responsive adjustments */\r\n@media (max-width: 640px) {\r\n .insforge-auth-card {\r\n padding: 2rem 1.5rem;\r\n }\r\n\r\n .insforge-auth-title {\r\n font-size: 1.75rem;\r\n }\r\n}\r\n\r\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/styles.css"],"sourcesContent":["/**\n * InsForge Next.js Component Library Styles\n * A standalone CSS file for auth components - no Tailwind required!\n */\n\n/* Font Face Declaration */\n@font-face {\n font-family: 'Manrope';\n src: url('./fonts/Manrope-VariableFont_wght.ttf') format('truetype');\n font-weight: 100 900;\n font-style: normal;\n font-display: swap;\n}\n\n/* CSS Variables */\n:root {\n --font-manrope: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n}\n\n/* Reset and Base Styles */\n.insforge-auth-container * {\n box-sizing: border-box;\n}\n\n/* Main Container - App handles layout, we just provide the card */\n.insforge-auth-container {\n width: 100%;\n max-width: 400px;\n background: white;\n}\n\n.insforge-branding {\n background: #FAFAFA;\n padding: 8px 8px 16px 8px;\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n gap: 4px;\n}\n\n.insforge-branding-text {\n color: #000;\n font-family: var(--font-manrope);\n font-size: 12px;\n font-style: normal;\n font-weight: 400;\n line-height: normal;\n}\n\n/* Form Card */\n.insforge-auth-card {\n width: 100%;\n border-radius: 12px;\n overflow: hidden;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.25);\n}\n\n.insforge-auth-content {\n padding: 24px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: stretch;\n gap: 24px;\n}\n\n/* Header */\n.insforge-auth-header {\n display: flex;\n flex-direction: column;\n justify-content: start;\n align-items: start;\n gap: 8px;\n}\n\n.insforge-auth-title {\n color: #000;\n font-family: Inter;\n font-size: 24px;\n font-style: normal;\n font-weight: 600;\n line-height: 32px; /* 133.333% */\n}\n\n.insforge-auth-subtitle {\n color: #828282;\n font-family: Inter;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 24px; /* 171.429% */\n}\n\n/* Error Banner */\n.insforge-error-banner {\n display: flex;\n padding: 8px 8px 8px 12px;\n margin-bottom: 16px;\n align-items: center;\n gap: 8px;\n align-self: stretch;\n border-radius: 4px;\n border: 2px solid #DC2626;\n background: #FEF2F2;\n color: #DC2626;\n font-family: Inter;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px; /* 142.857% */\n}\n\n.insforge-error-icon {\n color: #EF4444;\n flex-shrink: 0;\n width: 24px;\n height: 24px;\n}\n\n/* Form Elements */\n.insforge-form {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: stretch;\n gap: 24px;\n}\n\n.insforge-form-group {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: stretch;\n gap: 4px;\n}\n\n.insforge-form-label-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.insforge-form-label {\n color: #000;\n font-family: Inter;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 24px;\n}\n\n.insforge-form-link {\n color: #828282;\n text-align: right;\n font-family: Inter;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 24px;\n}\n\n.insforge-form-link:hover {\n color: #828282;\n text-decoration: underline;\n}\n\n/* Input Container for Password (with icon) */\n.insforge-input-wrapper {\n position: relative;\n}\n\n.insforge-input {\n width: 100%;\n display: flex;\n padding: 8px 8px 10px 12px;\n align-items: center;\n gap: 8px;\n align-self: stretch;\n border-radius: 4px;\n border: 1px solid #BCBCBC;\n background: #FFF;\n font-family: Inter;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n\n.insforge-input::placeholder {\n color: #A6A6A6;\n}\n\n.insforge-input:focus {\n outline: none;\n}\n\n.insforge-input-with-icon {\n padding-right: 3rem;\n}\n\n.insforge-input-icon-btn {\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n background: transparent;\n border: none;\n color: #A6A6A6;\n cursor: pointer;\n transition: color 0.2s;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.insforge-input-icon-btn:hover {\n color: #6b7280;\n}\n\n/* Primary Button */\n.insforge-btn-primary {\n border-radius: 4px;\n background: #000;\n width: 100%;\n display: flex;\n margin: 16px 0 0 0;\n padding: 8px 16px;\n justify-content: center;\n align-items: center;\n gap: 10px;\n align-self: stretch;\n color: #FFF;\n font-family: Manrope;\n font-size: 16px;\n font-style: normal;\n font-weight: 600;\n line-height: normal;\n border: none;\n cursor: pointer;\n}\n\n.insforge-btn-primary:hover {\n background: #303030;\n}\n\n.insforge-btn-primary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.insforge-btn-primary .insforge-btn-loader {\n display: none;\n animation: insforge-spin 1s linear infinite;\n}\n\n.insforge-btn-primary[data-loading] .insforge-btn-loader {\n display: block;\n}\n\n.insforge-btn-primary .insforge-btn-check {\n display: none;\n}\n\n.insforge-btn-primary[data-confirmed] .insforge-btn-check {\n display: block;\n}\n\n/* Text Link Section */\n.insforge-text-center {\n text-align: center;\n color: #828282;\n font-family: Inter;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 24px;\n}\n\n.insforge-link-primary {\n color: #000;\n font-family: Inter;\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n line-height: 24px;\n}\n\n/* Divider */\n.insforge-divider {\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 24px;\n align-self: stretch;\n}\n\n.insforge-divider::before,\n.insforge-divider::after {\n content: '';\n flex: 1;\n height: 1px;\n background: #C6C6C6;\n}\n\n.insforge-divider-text {\n color: #C6C6C6;\n font-family: Manrope;\n font-size: 14px;\n font-style: normal;\n font-weight: 600;\n line-height: normal;\n}\n\n/* OAuth Section */\n.insforge-oauth-container {\n display: grid;\n gap: 12px;\n width: 100%;\n}\n\n/* ============================================================================\n SMART OAUTH GRID LAYOUT SYSTEM\n Pattern: 1→1x1, 2→1x2, 3→1x3, 4→2x2, 5+→auto (3 per row, last row centered)\n ============================================================================ */\n\n/* 1 provider: single column, full width - displays \"Continue with Provider\" */\n.insforge-oauth-container[data-provider-count=\"1\"] {\n grid-template-columns: 1fr;\n}\n\n/* 2 providers: two columns - displays \"Provider\" */\n.insforge-oauth-container[data-provider-count=\"2\"] {\n grid-template-columns: repeat(2, 1fr);\n}\n\n/* 3 providers: three columns - icon only */\n.insforge-oauth-container[data-provider-count=\"3\"] {\n grid-template-columns: repeat(3, 1fr);\n}\n\n/* 4 providers: 2x2 grid - displays \"Provider\" */\n.insforge-oauth-container[data-provider-count=\"4\"] {\n grid-template-columns: repeat(2, 1fr);\n}\n\n/* 5+ providers: Universal 6-column grid system\n - Grid columns managed by OAuthProviderList component via inline styles\n - This provides precise control over button positioning */\n.insforge-oauth-container:not([data-provider-count=\"1\"]):not([data-provider-count=\"2\"]):not([data-provider-count=\"3\"]):not([data-provider-count=\"4\"]) {\n grid-template-columns: repeat(6, 1fr);\n}\n\n/* OAuth Button */\n.insforge-oauth-btn {\n display: flex;\n width: 100%;\n height: 36px;\n padding: 8px 12px;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n gap: 12px;\n border-radius: 6px;\n border: 1px solid #E4E4E7;\n background: #FFF;\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.10);\n color: #09090B;\n text-align: center;\n font-family: Inter;\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n line-height: 20px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n/* Full mode: show icon + \"Continue with Provider\" */\n.insforge-oauth-btn[data-display-mode=\"full\"] {\n justify-content: center;\n}\n\n/* Short mode: show icon + \"Provider\" */\n.insforge-oauth-btn[data-display-mode=\"short\"] {\n justify-content: center;\n padding: 8px;\n gap: 8px;\n}\n\n/* Icon only mode: show only icon */\n.insforge-oauth-btn[data-display-mode=\"icon\"] {\n justify-content: center;\n gap: 0;\n}\n\n.insforge-oauth-btn[data-display-mode=\"icon\"] .insforge-oauth-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.insforge-oauth-btn:hover {\n background: #f9fafb;\n border-color: #9ca3af;\n}\n\n.insforge-oauth-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.insforge-oauth-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.insforge-oauth-loader {\n display: none;\n animation: insforge-spin 1s linear infinite;\n}\n\n.insforge-oauth-btn[data-loading] .insforge-oauth-icon {\n display: none;\n}\n\n.insforge-oauth-btn[data-loading] .insforge-oauth-loader {\n display: block;\n}\n\n/* Spin Animation */\n@keyframes insforge-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n/* UserButton Styles */\n.insforge-user-button-container {\n position: relative;\n display: inline-block;\n}\n\n.insforge-user-button {\n padding: 0.25rem;\n background: transparent;\n border: none;\n border-radius: 9999px;\n cursor: pointer;\n transition: all 0.2s;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n}\n\n.insforge-user-button:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n\n.insforge-user-button-detailed {\n border-radius: 0.5rem;\n padding: 0.5rem;\n}\n\n.insforge-user-button-info {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 0.125rem;\n}\n\n.insforge-user-button-name {\n font-size: 0.875rem;\n font-weight: 600;\n color: #111827;\n line-height: 1.25rem;\n text-align: left;\n}\n\n.insforge-user-button-email {\n font-size: 0.75rem;\n color: #6b7280;\n line-height: 1rem;\n text-align: left;\n}\n\n.insforge-user-avatar {\n width: 2.5rem;\n height: 2.5rem;\n border-radius: 9999px;\n object-fit: cover;\n}\n\n.insforge-user-avatar-placeholder {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2.5rem;\n height: 2.5rem;\n background: #3b82f6;\n color: white;\n font-weight: 600;\n font-size: 0.875rem;\n border-radius: 9999px;\n}\n\n.insforge-user-dropdown {\n position: absolute;\n top: 100%;\n right: 0;\n margin-top: 0.5rem;\n min-width: 10rem;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 0.5rem;\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n z-index: 50;\n overflow: hidden;\n padding: 0.25rem;\n}\n\n.insforge-sign-out-button {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 0.5rem;\n width: 100%;\n padding: 0.5rem 0.75rem;\n font-size: 0.875rem;\n font-family: inherit;\n color: #dc2626;\n background: transparent;\n border: none;\n border-radius: 0.375rem;\n cursor: pointer;\n transition: background 0.2s;\n text-align: left;\n}\n\n.insforge-sign-out-button:hover {\n background: #fef2f2;\n}\n\n/* Loading State */\n.insforge-loading {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 2rem;\n color: #6b7280;\n font-size: 0.875rem;\n}\n\n/* Password Strength Indicator */\n.insforge-password-strength {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n margin-top: 0.5rem;\n}\n\n.insforge-password-requirement {\n height: 1.5rem;\n display: flex;\n align-items: center;\n gap: 0.25rem;\n}\n\n.insforge-password-check {\n width: 1.25rem;\n height: 1.25rem;\n border-radius: 9999px;\n display: flex;\n border-width: 2px;\n border-style: solid;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease-in-out;\n background-color: transparent;\n border-color: #a3a3a3;\n flex-shrink: 0;\n}\n\n.insforge-password-check-valid {\n background-color: #22c55e;\n border-color: transparent;\n}\n\n.insforge-password-check-icon {\n color: #fff;\n stroke-width: 3;\n}\n\n.insforge-password-requirement-label {\n color:#000;\n font-family: Inter;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 24px;\n}\n\n/* Verification Code Input */\n.insforge-verification-code-container {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 24px;\n}\n\n.insforge-verification-instructions {\n color: #525252;\n font-family: Inter;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n\n.insforge-verification-instructions > span {\n color: #000;\n font-family: Inter;\n font-size: 14px;\n font-style: normal;\n font-weight: 600;\n line-height: 20px;\n}\n\n.insforge-verification-code-inputs {\n display: flex;\n flex-direction: row;\n gap: 12px;\n justify-content: center;\n align-items: center;\n}\n\n.insforge-verification-code-input {\n width: 100%;\n height: 48px;\n padding: 8px 12px;\n border-radius: 4px;\n border: 1px solid #E0E0E0;\n background: #FFF;\n text-align: center;\n font-size: 16px;\n font-style: normal;\n line-height: 20px;\n font-weight: 600;\n font-family: var(--font-manrope);\n color: #000;\n transition: all 0.2s ease-in-out;\n outline: none;\n}\n\n.insforge-verification-code-input:focus {\n border-color: #000;\n box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.1);\n}\n\n.insforge-verification-code-input:disabled {\n background-color: #F5F5F5;\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n/* Verification Instructions */\n.insforge-verification-instructions {\n color: #4F4F4F;\n font-family: Inter;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 24px;\n margin-bottom: 8px;\n}\n\n.insforge-verification-email {\n color: #000;\n font-weight: 600;\n}\n\n.insforge-resend-code {\n color: #525252;\n font-family: Inter;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 24px;\n text-align: center;\n}\n\n.insforge-resend-link {\n color: #000;\n font-family: Inter;\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n line-height: 24px;\n}\n\n.insforge-resend-link:hover {\n text-decoration: underline;\n}\n\n.insforge-resend-link:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Responsive adjustments */\n@media (max-width: 640px) {\n .insforge-auth-card {\n padding: 2rem 1.5rem;\n }\n\n .insforge-auth-title {\n font-size: 1.75rem;\n }\n\n .insforge-verification-code-container {\n gap: 8px;\n }\n\n .insforge-verification-code-input {\n width: 40px;\n height: 48px;\n font-size: 20px;\n }\n}\n\n"],"mappings":"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","names":[]}
package/dist/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as react from 'react';
3
- import { ReactNode } from 'react';
3
+ import { ReactNode, CSSProperties, InputHTMLAttributes } from 'react';
4
4
 
5
5
  interface InsforgeUser {
6
6
  id: string;
@@ -19,25 +19,8 @@ interface InsforgeSession {
19
19
  expiresAt: string;
20
20
  createdAt: string;
21
21
  }
22
- interface AuthContextValue {
23
- user: InsforgeUser | null;
24
- session: InsforgeSession | null;
25
- isLoaded: boolean;
26
- isSignedIn: boolean;
27
- signIn: (email: string, password: string) => Promise<void>;
28
- signUp: (email: string, password: string) => Promise<void>;
29
- signOut: () => Promise<void>;
30
- updateUser: (data: Partial<InsforgeUser>) => Promise<void>;
31
- }
32
- interface AuthProviderProps {
33
- children: ReactNode;
34
- baseUrl: string;
35
- onAuthChange?: (user: InsforgeUser | null) => void;
36
- }
37
22
  interface SignInProps {
38
- baseUrl: string;
39
23
  afterSignInUrl?: string;
40
- providers?: OAuthProvider[];
41
24
  appearance?: {
42
25
  container?: React.CSSProperties;
43
26
  form?: React.CSSProperties;
@@ -60,9 +43,7 @@ interface SignInProps {
60
43
  onError?: (error: Error) => void;
61
44
  }
62
45
  interface SignUpProps {
63
- baseUrl: string;
64
46
  afterSignUpUrl?: string;
65
- providers?: OAuthProvider[];
66
47
  appearance?: {
67
48
  container?: React.CSSProperties;
68
49
  form?: React.CSSProperties;
@@ -76,6 +57,9 @@ interface SignUpProps {
76
57
  passwordPlaceholder?: string;
77
58
  submitButtonText?: string;
78
59
  loadingButtonText?: string;
60
+ verifyButtonText?: string;
61
+ loadingVerifyButtonText?: string;
62
+ verifiedButtonText?: string;
79
63
  signInText?: string;
80
64
  signInLinkText?: string;
81
65
  signInUrl?: string;
@@ -100,40 +84,68 @@ interface ProtectProps {
100
84
  interface ConditionalProps {
101
85
  children: ReactNode;
102
86
  }
103
- type OAuthProvider = 'google' | 'github';
104
-
105
- declare function AuthProvider({ children, baseUrl, onAuthChange }: AuthProviderProps): react_jsx_runtime.JSX.Element;
87
+ type OAuthProvider = 'google' | 'github' | 'discord' | 'facebook' | 'linkedin' | 'instagram' | 'tiktok' | 'apple' | 'x' | 'spotify' | 'microsoft';
88
+ interface OAuthProviderConfig {
89
+ name: string;
90
+ svg: JSX.Element;
91
+ className: string;
92
+ }
106
93
 
107
- interface InsforgeConfig {
108
- oauthProviders: OAuthProvider[];
94
+ interface InsforgeContextValue {
95
+ user: InsforgeUser | null;
96
+ session: InsforgeSession | null;
109
97
  isLoaded: boolean;
110
- refetch: () => Promise<void>;
98
+ isSignedIn: boolean;
99
+ setUser: (user: InsforgeUser | null) => void;
100
+ signIn: (email: string, password: string) => Promise<void>;
101
+ signUp: (email: string, password: string) => Promise<void>;
102
+ signOut: () => Promise<void>;
103
+ updateUser: (data: Partial<InsforgeUser>) => Promise<void>;
104
+ sendVerificationCode: (email: string, type: 'signup' | 'signin') => Promise<void>;
105
+ verifySignUpCode: (email: string, password: string, code: string) => Promise<void>;
106
+ verifySignInCode: (email: string, code: string) => Promise<void>;
107
+ oauthProviders: OAuthProvider[];
108
+ isConfigLoaded: boolean;
109
+ baseUrl: string;
111
110
  }
112
- interface InsforgeConfigProviderProps {
111
+ interface InsforgeProviderProps {
113
112
  children: ReactNode;
114
113
  baseUrl: string;
114
+ frontendUrl?: string;
115
+ onAuthChange?: (user: InsforgeUser | null) => void;
116
+ useBuiltInAuth?: boolean;
115
117
  }
116
- declare function InsforgeConfigProvider({ children, baseUrl }: InsforgeConfigProviderProps): react_jsx_runtime.JSX.Element;
117
- declare function useInsforgeConfig(): InsforgeConfig;
118
+ declare function InsforgeProvider({ children, baseUrl, frontendUrl, onAuthChange, useBuiltInAuth }: InsforgeProviderProps): react_jsx_runtime.JSX.Element;
119
+ declare function useInsforge(): InsforgeContextValue;
118
120
 
119
- declare function useAuth(): AuthContextValue;
121
+ declare function useAuth(): {
122
+ signIn: (email: string, password: string) => Promise<void>;
123
+ signUp: (email: string, password: string) => Promise<void>;
124
+ signOut: () => Promise<void>;
125
+ isLoaded: boolean;
126
+ isSignedIn: boolean;
127
+ };
120
128
 
121
129
  declare function useUser(): {
122
130
  user: InsforgeUser | null;
123
131
  isLoaded: boolean;
132
+ updateUser: (data: Partial<InsforgeUser>) => Promise<void>;
133
+ setUser: (user: InsforgeUser | null) => void;
124
134
  };
125
135
 
126
136
  declare function useSession(): {
127
137
  session: InsforgeSession | null;
128
138
  isLoaded: boolean;
129
- isSignedIn: boolean;
130
139
  };
131
140
 
132
- declare function useOAuthProviders(): OAuthProvider[];
141
+ declare function useOAuthProviders(): {
142
+ providers: OAuthProvider[];
143
+ isLoaded: boolean;
144
+ };
133
145
 
134
- declare function SignIn({ baseUrl, afterSignInUrl, providers, appearance, title, subtitle, emailLabel, emailPlaceholder, passwordLabel, passwordPlaceholder, forgotPasswordText, submitButtonText, loadingButtonText, signUpText, signUpLinkText, signUpUrl, dividerText, onSuccess, onError, }: SignInProps): react_jsx_runtime.JSX.Element;
146
+ declare function SignIn({ afterSignInUrl, appearance, title, subtitle, emailLabel, emailPlaceholder, passwordLabel, passwordPlaceholder, forgotPasswordText, submitButtonText, loadingButtonText, signUpText, signUpLinkText, signUpUrl, dividerText, onSuccess, onError, }: SignInProps): react_jsx_runtime.JSX.Element;
135
147
 
136
- declare function SignUp({ baseUrl, afterSignUpUrl, providers, appearance, title, subtitle, emailLabel, emailPlaceholder, passwordLabel, passwordPlaceholder, submitButtonText, loadingButtonText, signInText, signInLinkText, signInUrl, dividerText, onSuccess, onError, }: SignUpProps): react_jsx_runtime.JSX.Element;
148
+ declare function SignUp({ afterSignUpUrl, appearance, title, subtitle, emailLabel, emailPlaceholder, passwordLabel, passwordPlaceholder, submitButtonText, loadingButtonText, verifyButtonText, loadingVerifyButtonText, verifiedButtonText, signInText, signInLinkText, signInUrl, dividerText, onSuccess, onError, }: SignUpProps): react_jsx_runtime.JSX.Element;
137
149
 
138
150
  declare function UserButton({ afterSignOutUrl, mode, appearance, }: UserButtonProps): react_jsx_runtime.JSX.Element | null;
139
151
 
@@ -143,4 +155,104 @@ declare function SignedOut({ children }: ConditionalProps): react_jsx_runtime.JS
143
155
 
144
156
  declare function Protect({ children, fallback, redirectTo, condition, }: ProtectProps): string | number | bigint | true | Iterable<react.ReactNode> | Promise<react.AwaitedReactNode> | react_jsx_runtime.JSX.Element | null;
145
157
 
146
- export { type AuthContextValue, AuthProvider, type AuthProviderProps, type ConditionalProps, InsforgeConfigProvider, type InsforgeSession, type InsforgeUser, type OAuthProvider, Protect, type ProtectProps, SignIn, type SignInProps, SignUp, type SignUpProps, SignedIn, SignedOut, UserButton, type UserButtonProps, useAuth, useInsforgeConfig, useOAuthProviders, useSession, useUser };
158
+ interface AuthContainerProps {
159
+ children: ReactNode;
160
+ style?: CSSProperties;
161
+ }
162
+ declare function AuthContainer({ children, style }: AuthContainerProps): react_jsx_runtime.JSX.Element;
163
+
164
+ interface AuthHeaderProps {
165
+ title: string;
166
+ subtitle?: string;
167
+ }
168
+ declare function AuthHeader({ title, subtitle }: AuthHeaderProps): react_jsx_runtime.JSX.Element;
169
+
170
+ interface AuthErrorBannerProps {
171
+ error: string;
172
+ }
173
+ declare function AuthErrorBanner({ error }: AuthErrorBannerProps): react_jsx_runtime.JSX.Element | null;
174
+
175
+ interface AuthFormFieldProps extends InputHTMLAttributes<HTMLInputElement> {
176
+ label: string;
177
+ id: string;
178
+ }
179
+ declare function AuthFormField({ label, id, className, ...props }: AuthFormFieldProps): react_jsx_runtime.JSX.Element;
180
+
181
+ interface AuthPasswordFieldProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {
182
+ label: string;
183
+ id: string;
184
+ showStrengthIndicator?: boolean;
185
+ forgotPasswordLink?: {
186
+ href: string;
187
+ text?: string;
188
+ };
189
+ }
190
+ declare function AuthPasswordField({ label, id, showStrengthIndicator, forgotPasswordLink, value, className, onFocus, ...props }: AuthPasswordFieldProps): react_jsx_runtime.JSX.Element;
191
+
192
+ interface AuthSubmitButtonProps {
193
+ children: ReactNode;
194
+ isLoading?: boolean;
195
+ confirmed?: boolean;
196
+ disabled?: boolean;
197
+ style?: CSSProperties;
198
+ }
199
+ declare function AuthSubmitButton({ children, isLoading, confirmed, disabled, style, }: AuthSubmitButtonProps): react_jsx_runtime.JSX.Element;
200
+
201
+ interface AuthDividerProps {
202
+ text?: string;
203
+ }
204
+ declare function AuthDivider({ text }: AuthDividerProps): react_jsx_runtime.JSX.Element;
205
+
206
+ interface AuthLinkProps {
207
+ text: string;
208
+ linkText: string;
209
+ href: string;
210
+ }
211
+ declare function AuthLink({ text, linkText, href }: AuthLinkProps): react_jsx_runtime.JSX.Element;
212
+
213
+ interface AuthOAuthProvidersProps {
214
+ providers: OAuthProvider[];
215
+ onClick: (provider: OAuthProvider) => void;
216
+ disabled?: boolean;
217
+ loading: OAuthProvider | null;
218
+ }
219
+ declare function AuthOAuthProviders({ providers, onClick, disabled, loading, }: AuthOAuthProvidersProps): react_jsx_runtime.JSX.Element | null;
220
+
221
+ interface AuthBrandingProps {
222
+ text?: string;
223
+ href?: string;
224
+ }
225
+ declare function AuthBranding({ text, href }: AuthBrandingProps): react_jsx_runtime.JSX.Element;
226
+
227
+ type DisplayMode = 'full' | 'short' | 'icon';
228
+ interface AuthOAuthButtonProps {
229
+ provider: OAuthProvider;
230
+ onClick: (provider: OAuthProvider) => void;
231
+ disabled?: boolean;
232
+ loading?: boolean;
233
+ displayMode?: DisplayMode;
234
+ style?: React.CSSProperties;
235
+ }
236
+ declare function AuthOAuthButton({ provider, onClick, disabled, loading, displayMode, style }: AuthOAuthButtonProps): react_jsx_runtime.JSX.Element | null;
237
+
238
+ interface AuthPasswordStrengthIndicatorProps {
239
+ password: string;
240
+ }
241
+ declare function validatePasswordStrength(password: string): boolean;
242
+ declare function AuthPasswordStrengthIndicator({ password }: AuthPasswordStrengthIndicatorProps): react_jsx_runtime.JSX.Element;
243
+
244
+ interface AuthVerificationCodeInputProps {
245
+ length?: number;
246
+ value: string;
247
+ email: string;
248
+ onChange: (value: string) => void;
249
+ disabled?: boolean;
250
+ }
251
+ declare function AuthVerificationCodeInput({ length, value, email, onChange, disabled, }: AuthVerificationCodeInputProps): react_jsx_runtime.JSX.Element;
252
+
253
+ declare const OAUTH_PROVIDER_CONFIG: Record<OAuthProvider, OAuthProviderConfig>;
254
+ declare function getProviderConfig(provider: OAuthProvider): OAuthProviderConfig | null;
255
+ declare function getProviderName(provider: OAuthProvider): string;
256
+ declare function isProviderSupported(provider: string): provider is OAuthProvider;
257
+
258
+ export { AuthBranding, AuthContainer, AuthDivider, AuthErrorBanner, AuthFormField, AuthHeader, AuthLink, AuthOAuthButton, AuthOAuthProviders, AuthPasswordField, AuthPasswordStrengthIndicator, AuthSubmitButton, AuthVerificationCodeInput, type ConditionalProps, InsforgeProvider, type InsforgeSession, type InsforgeUser, OAUTH_PROVIDER_CONFIG, type OAuthProvider, type OAuthProviderConfig, Protect, type ProtectProps, SignIn, type SignInProps, SignUp, type SignUpProps, SignedIn, SignedOut, UserButton, type UserButtonProps, getProviderConfig, getProviderName, isProviderSupported, useAuth, useInsforge, useOAuthProviders, useSession, useUser, validatePasswordStrength };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as react from 'react';
3
- import { ReactNode } from 'react';
3
+ import { ReactNode, CSSProperties, InputHTMLAttributes } from 'react';
4
4
 
5
5
  interface InsforgeUser {
6
6
  id: string;
@@ -19,25 +19,8 @@ interface InsforgeSession {
19
19
  expiresAt: string;
20
20
  createdAt: string;
21
21
  }
22
- interface AuthContextValue {
23
- user: InsforgeUser | null;
24
- session: InsforgeSession | null;
25
- isLoaded: boolean;
26
- isSignedIn: boolean;
27
- signIn: (email: string, password: string) => Promise<void>;
28
- signUp: (email: string, password: string) => Promise<void>;
29
- signOut: () => Promise<void>;
30
- updateUser: (data: Partial<InsforgeUser>) => Promise<void>;
31
- }
32
- interface AuthProviderProps {
33
- children: ReactNode;
34
- baseUrl: string;
35
- onAuthChange?: (user: InsforgeUser | null) => void;
36
- }
37
22
  interface SignInProps {
38
- baseUrl: string;
39
23
  afterSignInUrl?: string;
40
- providers?: OAuthProvider[];
41
24
  appearance?: {
42
25
  container?: React.CSSProperties;
43
26
  form?: React.CSSProperties;
@@ -60,9 +43,7 @@ interface SignInProps {
60
43
  onError?: (error: Error) => void;
61
44
  }
62
45
  interface SignUpProps {
63
- baseUrl: string;
64
46
  afterSignUpUrl?: string;
65
- providers?: OAuthProvider[];
66
47
  appearance?: {
67
48
  container?: React.CSSProperties;
68
49
  form?: React.CSSProperties;
@@ -76,6 +57,9 @@ interface SignUpProps {
76
57
  passwordPlaceholder?: string;
77
58
  submitButtonText?: string;
78
59
  loadingButtonText?: string;
60
+ verifyButtonText?: string;
61
+ loadingVerifyButtonText?: string;
62
+ verifiedButtonText?: string;
79
63
  signInText?: string;
80
64
  signInLinkText?: string;
81
65
  signInUrl?: string;
@@ -100,40 +84,68 @@ interface ProtectProps {
100
84
  interface ConditionalProps {
101
85
  children: ReactNode;
102
86
  }
103
- type OAuthProvider = 'google' | 'github';
104
-
105
- declare function AuthProvider({ children, baseUrl, onAuthChange }: AuthProviderProps): react_jsx_runtime.JSX.Element;
87
+ type OAuthProvider = 'google' | 'github' | 'discord' | 'facebook' | 'linkedin' | 'instagram' | 'tiktok' | 'apple' | 'x' | 'spotify' | 'microsoft';
88
+ interface OAuthProviderConfig {
89
+ name: string;
90
+ svg: JSX.Element;
91
+ className: string;
92
+ }
106
93
 
107
- interface InsforgeConfig {
108
- oauthProviders: OAuthProvider[];
94
+ interface InsforgeContextValue {
95
+ user: InsforgeUser | null;
96
+ session: InsforgeSession | null;
109
97
  isLoaded: boolean;
110
- refetch: () => Promise<void>;
98
+ isSignedIn: boolean;
99
+ setUser: (user: InsforgeUser | null) => void;
100
+ signIn: (email: string, password: string) => Promise<void>;
101
+ signUp: (email: string, password: string) => Promise<void>;
102
+ signOut: () => Promise<void>;
103
+ updateUser: (data: Partial<InsforgeUser>) => Promise<void>;
104
+ sendVerificationCode: (email: string, type: 'signup' | 'signin') => Promise<void>;
105
+ verifySignUpCode: (email: string, password: string, code: string) => Promise<void>;
106
+ verifySignInCode: (email: string, code: string) => Promise<void>;
107
+ oauthProviders: OAuthProvider[];
108
+ isConfigLoaded: boolean;
109
+ baseUrl: string;
111
110
  }
112
- interface InsforgeConfigProviderProps {
111
+ interface InsforgeProviderProps {
113
112
  children: ReactNode;
114
113
  baseUrl: string;
114
+ frontendUrl?: string;
115
+ onAuthChange?: (user: InsforgeUser | null) => void;
116
+ useBuiltInAuth?: boolean;
115
117
  }
116
- declare function InsforgeConfigProvider({ children, baseUrl }: InsforgeConfigProviderProps): react_jsx_runtime.JSX.Element;
117
- declare function useInsforgeConfig(): InsforgeConfig;
118
+ declare function InsforgeProvider({ children, baseUrl, frontendUrl, onAuthChange, useBuiltInAuth }: InsforgeProviderProps): react_jsx_runtime.JSX.Element;
119
+ declare function useInsforge(): InsforgeContextValue;
118
120
 
119
- declare function useAuth(): AuthContextValue;
121
+ declare function useAuth(): {
122
+ signIn: (email: string, password: string) => Promise<void>;
123
+ signUp: (email: string, password: string) => Promise<void>;
124
+ signOut: () => Promise<void>;
125
+ isLoaded: boolean;
126
+ isSignedIn: boolean;
127
+ };
120
128
 
121
129
  declare function useUser(): {
122
130
  user: InsforgeUser | null;
123
131
  isLoaded: boolean;
132
+ updateUser: (data: Partial<InsforgeUser>) => Promise<void>;
133
+ setUser: (user: InsforgeUser | null) => void;
124
134
  };
125
135
 
126
136
  declare function useSession(): {
127
137
  session: InsforgeSession | null;
128
138
  isLoaded: boolean;
129
- isSignedIn: boolean;
130
139
  };
131
140
 
132
- declare function useOAuthProviders(): OAuthProvider[];
141
+ declare function useOAuthProviders(): {
142
+ providers: OAuthProvider[];
143
+ isLoaded: boolean;
144
+ };
133
145
 
134
- declare function SignIn({ baseUrl, afterSignInUrl, providers, appearance, title, subtitle, emailLabel, emailPlaceholder, passwordLabel, passwordPlaceholder, forgotPasswordText, submitButtonText, loadingButtonText, signUpText, signUpLinkText, signUpUrl, dividerText, onSuccess, onError, }: SignInProps): react_jsx_runtime.JSX.Element;
146
+ declare function SignIn({ afterSignInUrl, appearance, title, subtitle, emailLabel, emailPlaceholder, passwordLabel, passwordPlaceholder, forgotPasswordText, submitButtonText, loadingButtonText, signUpText, signUpLinkText, signUpUrl, dividerText, onSuccess, onError, }: SignInProps): react_jsx_runtime.JSX.Element;
135
147
 
136
- declare function SignUp({ baseUrl, afterSignUpUrl, providers, appearance, title, subtitle, emailLabel, emailPlaceholder, passwordLabel, passwordPlaceholder, submitButtonText, loadingButtonText, signInText, signInLinkText, signInUrl, dividerText, onSuccess, onError, }: SignUpProps): react_jsx_runtime.JSX.Element;
148
+ declare function SignUp({ afterSignUpUrl, appearance, title, subtitle, emailLabel, emailPlaceholder, passwordLabel, passwordPlaceholder, submitButtonText, loadingButtonText, verifyButtonText, loadingVerifyButtonText, verifiedButtonText, signInText, signInLinkText, signInUrl, dividerText, onSuccess, onError, }: SignUpProps): react_jsx_runtime.JSX.Element;
137
149
 
138
150
  declare function UserButton({ afterSignOutUrl, mode, appearance, }: UserButtonProps): react_jsx_runtime.JSX.Element | null;
139
151
 
@@ -143,4 +155,104 @@ declare function SignedOut({ children }: ConditionalProps): react_jsx_runtime.JS
143
155
 
144
156
  declare function Protect({ children, fallback, redirectTo, condition, }: ProtectProps): string | number | bigint | true | Iterable<react.ReactNode> | Promise<react.AwaitedReactNode> | react_jsx_runtime.JSX.Element | null;
145
157
 
146
- export { type AuthContextValue, AuthProvider, type AuthProviderProps, type ConditionalProps, InsforgeConfigProvider, type InsforgeSession, type InsforgeUser, type OAuthProvider, Protect, type ProtectProps, SignIn, type SignInProps, SignUp, type SignUpProps, SignedIn, SignedOut, UserButton, type UserButtonProps, useAuth, useInsforgeConfig, useOAuthProviders, useSession, useUser };
158
+ interface AuthContainerProps {
159
+ children: ReactNode;
160
+ style?: CSSProperties;
161
+ }
162
+ declare function AuthContainer({ children, style }: AuthContainerProps): react_jsx_runtime.JSX.Element;
163
+
164
+ interface AuthHeaderProps {
165
+ title: string;
166
+ subtitle?: string;
167
+ }
168
+ declare function AuthHeader({ title, subtitle }: AuthHeaderProps): react_jsx_runtime.JSX.Element;
169
+
170
+ interface AuthErrorBannerProps {
171
+ error: string;
172
+ }
173
+ declare function AuthErrorBanner({ error }: AuthErrorBannerProps): react_jsx_runtime.JSX.Element | null;
174
+
175
+ interface AuthFormFieldProps extends InputHTMLAttributes<HTMLInputElement> {
176
+ label: string;
177
+ id: string;
178
+ }
179
+ declare function AuthFormField({ label, id, className, ...props }: AuthFormFieldProps): react_jsx_runtime.JSX.Element;
180
+
181
+ interface AuthPasswordFieldProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {
182
+ label: string;
183
+ id: string;
184
+ showStrengthIndicator?: boolean;
185
+ forgotPasswordLink?: {
186
+ href: string;
187
+ text?: string;
188
+ };
189
+ }
190
+ declare function AuthPasswordField({ label, id, showStrengthIndicator, forgotPasswordLink, value, className, onFocus, ...props }: AuthPasswordFieldProps): react_jsx_runtime.JSX.Element;
191
+
192
+ interface AuthSubmitButtonProps {
193
+ children: ReactNode;
194
+ isLoading?: boolean;
195
+ confirmed?: boolean;
196
+ disabled?: boolean;
197
+ style?: CSSProperties;
198
+ }
199
+ declare function AuthSubmitButton({ children, isLoading, confirmed, disabled, style, }: AuthSubmitButtonProps): react_jsx_runtime.JSX.Element;
200
+
201
+ interface AuthDividerProps {
202
+ text?: string;
203
+ }
204
+ declare function AuthDivider({ text }: AuthDividerProps): react_jsx_runtime.JSX.Element;
205
+
206
+ interface AuthLinkProps {
207
+ text: string;
208
+ linkText: string;
209
+ href: string;
210
+ }
211
+ declare function AuthLink({ text, linkText, href }: AuthLinkProps): react_jsx_runtime.JSX.Element;
212
+
213
+ interface AuthOAuthProvidersProps {
214
+ providers: OAuthProvider[];
215
+ onClick: (provider: OAuthProvider) => void;
216
+ disabled?: boolean;
217
+ loading: OAuthProvider | null;
218
+ }
219
+ declare function AuthOAuthProviders({ providers, onClick, disabled, loading, }: AuthOAuthProvidersProps): react_jsx_runtime.JSX.Element | null;
220
+
221
+ interface AuthBrandingProps {
222
+ text?: string;
223
+ href?: string;
224
+ }
225
+ declare function AuthBranding({ text, href }: AuthBrandingProps): react_jsx_runtime.JSX.Element;
226
+
227
+ type DisplayMode = 'full' | 'short' | 'icon';
228
+ interface AuthOAuthButtonProps {
229
+ provider: OAuthProvider;
230
+ onClick: (provider: OAuthProvider) => void;
231
+ disabled?: boolean;
232
+ loading?: boolean;
233
+ displayMode?: DisplayMode;
234
+ style?: React.CSSProperties;
235
+ }
236
+ declare function AuthOAuthButton({ provider, onClick, disabled, loading, displayMode, style }: AuthOAuthButtonProps): react_jsx_runtime.JSX.Element | null;
237
+
238
+ interface AuthPasswordStrengthIndicatorProps {
239
+ password: string;
240
+ }
241
+ declare function validatePasswordStrength(password: string): boolean;
242
+ declare function AuthPasswordStrengthIndicator({ password }: AuthPasswordStrengthIndicatorProps): react_jsx_runtime.JSX.Element;
243
+
244
+ interface AuthVerificationCodeInputProps {
245
+ length?: number;
246
+ value: string;
247
+ email: string;
248
+ onChange: (value: string) => void;
249
+ disabled?: boolean;
250
+ }
251
+ declare function AuthVerificationCodeInput({ length, value, email, onChange, disabled, }: AuthVerificationCodeInputProps): react_jsx_runtime.JSX.Element;
252
+
253
+ declare const OAUTH_PROVIDER_CONFIG: Record<OAuthProvider, OAuthProviderConfig>;
254
+ declare function getProviderConfig(provider: OAuthProvider): OAuthProviderConfig | null;
255
+ declare function getProviderName(provider: OAuthProvider): string;
256
+ declare function isProviderSupported(provider: string): provider is OAuthProvider;
257
+
258
+ export { AuthBranding, AuthContainer, AuthDivider, AuthErrorBanner, AuthFormField, AuthHeader, AuthLink, AuthOAuthButton, AuthOAuthProviders, AuthPasswordField, AuthPasswordStrengthIndicator, AuthSubmitButton, AuthVerificationCodeInput, type ConditionalProps, InsforgeProvider, type InsforgeSession, type InsforgeUser, OAUTH_PROVIDER_CONFIG, type OAuthProvider, type OAuthProviderConfig, Protect, type ProtectProps, SignIn, type SignInProps, SignUp, type SignUpProps, SignedIn, SignedOut, UserButton, type UserButtonProps, getProviderConfig, getProviderName, isProviderSupported, useAuth, useInsforge, useOAuthProviders, useSession, useUser, validatePasswordStrength };