@omnikit-js/ui 0.9.19 → 0.9.21

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/client/Tabs/index.tsx","../../../src/components/client/PaymentMethodManager/index.tsx","../../../src/components/client/LoginForm/index.tsx","../../../src/components/client/RegisterForm/index.tsx","../../../src/components/client/ForgotPasswordForm/index.tsx","../../../src/components/client/ResetPasswordForm/index.tsx","../../../src/components/client/FileUploader/upload-utils.ts","../../../src/components/client/FileUploader/index.tsx","../../../src/components/client/index.ts"],"names":["useState","jsxs","jsx","Fragment","result","DEFAULT_MULTIPART_THRESHOLD","uploadSingleFile"],"mappings":"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","file":"index.mjs","sourcesContent":["'use client'\n\nimport { useState } from 'react'\n\nexport interface Tab {\n id: string\n label: string\n content: React.ReactNode\n}\n\nexport interface TabsProps {\n tabs: Tab[]\n defaultTab?: string\n className?: string\n}\n\nexport function Tabs({ tabs, defaultTab, className = '' }: TabsProps) {\n const [activeTab, setActiveTab] = useState(defaultTab || tabs[0]?.id)\n\n return (\n <div className={className}>\n <div className=\"border-b border-gray-200 dark:border-gray-700\">\n <nav className=\"-mb-px flex space-x-8\">\n {tabs.map((tab) => (\n <button\n key={tab.id}\n onClick={() => setActiveTab(tab.id)}\n className={`\n whitespace-nowrap border-b-2 px-1 pb-4 text-sm font-medium transition-colors\n ${\n activeTab === tab.id\n ? 'border-blue-500 text-blue-600 dark:text-blue-400'\n : 'border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300'\n }\n `}\n >\n {tab.label}\n </button>\n ))}\n </nav>\n </div>\n <div className=\"mt-6\">\n {tabs.find((tab) => tab.id === activeTab)?.content}\n </div>\n </div>\n )\n}\n","'use client'\n\nimport { useState } from 'react'\nimport { Modal } from '../Modal'\nimport { Button } from '../LiteButton'\n\nexport interface PaymentMethodManagerProps {\n currentMethod: {\n type: string\n last4: string\n expiry: string\n }\n}\n\nexport function PaymentMethodManager({ currentMethod }: PaymentMethodManagerProps) {\n const [isModalOpen, setIsModalOpen] = useState(false)\n\n return (\n <>\n <div>\n <h3 className=\"text-lg font-semibold mb-4\">Current Payment Method</h3>\n <div className=\"flex items-center justify-between p-4 border border-gray-200 dark:border-gray-700 rounded-lg mb-6\">\n <div className=\"flex items-center gap-4\">\n <div className=\"h-12 w-16 rounded bg-gradient-to-br from-blue-600 to-blue-800 flex items-center justify-center text-white font-bold text-sm\">\n {currentMethod.type}\n </div>\n <div>\n <p className=\"font-medium\">•••• •••• •••• {currentMethod.last4}</p>\n <p className=\"text-sm text-gray-600 dark:text-gray-400\">\n Expires {currentMethod.expiry}\n </p>\n </div>\n </div>\n <Button\n onClick={() => setIsModalOpen(true)}\n variant=\"secondary\"\n size=\"sm\"\n >\n Update\n </Button>\n </div>\n\n <Button\n onClick={() => setIsModalOpen(true)}\n className=\"w-full\"\n >\n Add New Payment Method\n </Button>\n </div>\n\n <Modal\n isOpen={isModalOpen}\n onClose={() => setIsModalOpen(false)}\n title=\"Add Payment Method\"\n >\n <div className=\"space-y-4\">\n <div>\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\">\n Cardholder Name\n </label>\n <input\n type=\"text\"\n placeholder=\"John Doe\"\n className=\"w-full rounded-lg border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-800 px-4 py-2 text-sm focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\">\n Card Number\n </label>\n <input\n type=\"text\"\n placeholder=\"1234 5678 9012 3456\"\n className=\"w-full rounded-lg border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-800 px-4 py-2 text-sm focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20\"\n />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\">\n Expiry Date\n </label>\n <input\n type=\"text\"\n placeholder=\"MM/YY\"\n className=\"w-full rounded-lg border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-800 px-4 py-2 text-sm focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\">\n CVC\n </label>\n <input\n type=\"text\"\n placeholder=\"123\"\n className=\"w-full rounded-lg border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-800 px-4 py-2 text-sm focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20\"\n />\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n id=\"setDefaultModal\"\n className=\"rounded border-gray-300 dark:border-gray-600 text-blue-600 focus:ring-blue-500\"\n />\n <label htmlFor=\"setDefaultModal\" className=\"text-sm text-gray-700 dark:text-gray-300\">\n Set as default payment method\n </label>\n </div>\n <div className=\"flex gap-3 pt-4\">\n <Button\n onClick={() => setIsModalOpen(false)}\n variant=\"secondary\"\n className=\"flex-1\"\n >\n Cancel\n </Button>\n <Button\n onClick={() => setIsModalOpen(false)}\n className=\"flex-1\"\n >\n Add Card\n </Button>\n </div>\n </div>\n </Modal>\n </>\n )\n}\n","'use client'\n\nimport { useState, FormEvent } from 'react'\nimport { TextInput, Button, Spinner } from '@marcoschwartz/lite-ui'\nimport type { LoginFormProps, LoginSuccessData, LoginFormState } from './types'\n\nexport type { LoginFormProps, LoginSuccessData }\n\nexport function LoginForm({\n apiUrl,\n projectId,\n onSuccess,\n onError,\n showRememberMe = false,\n allowUsername = false,\n className = '',\n registerLink,\n forgotPasswordLink,\n}: LoginFormProps) {\n const [state, setState] = useState<LoginFormState>({\n email: '',\n password: '',\n rememberMe: false,\n isLoading: false,\n error: null,\n })\n\n const handleSubmit = async (e: FormEvent) => {\n e.preventDefault()\n setState(prev => ({ ...prev, isLoading: true, error: null }))\n\n try {\n const response = await fetch(`${apiUrl}/auth/login`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n [allowUsername && !state.email.includes('@') ? 'username' : 'email']: state.email,\n password: state.password,\n project_id: projectId,\n }),\n })\n\n const data = await response.json()\n\n if (!response.ok) {\n throw new Error(data.error || 'Login failed')\n }\n\n onSuccess?.(data as LoginSuccessData)\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Login failed')\n setState(prev => ({ ...prev, error: error.message }))\n onError?.(error)\n } finally {\n setState(prev => ({ ...prev, isLoading: false }))\n }\n }\n\n return (\n <form onSubmit={handleSubmit} className={`space-y-4 ${className}`}>\n {state.error && (\n <div className=\"p-3 text-sm text-red-600 bg-red-50 dark:bg-red-900/20 dark:text-red-400 rounded-md\">\n {state.error}\n </div>\n )}\n\n <TextInput\n label={allowUsername ? 'Email or Username' : 'Email'}\n type={allowUsername ? 'text' : 'email'}\n value={state.email}\n onChange={(e) => setState(prev => ({ ...prev, email: e.target.value }))}\n placeholder={allowUsername ? 'you@example.com or username' : 'you@example.com'}\n required\n disabled={state.isLoading}\n fullWidth\n autoComplete=\"username\"\n />\n\n <TextInput\n label=\"Password\"\n type=\"password\"\n value={state.password}\n onChange={(e) => setState(prev => ({ ...prev, password: e.target.value }))}\n placeholder=\"Enter your password\"\n required\n disabled={state.isLoading}\n fullWidth\n autoComplete=\"current-password\"\n />\n\n {showRememberMe && (\n <label className=\"flex items-center gap-2 text-sm\">\n <input\n type=\"checkbox\"\n checked={state.rememberMe}\n onChange={(e) => setState(prev => ({ ...prev, rememberMe: e.target.checked }))}\n className=\"rounded border-gray-300 text-blue-600 focus:ring-blue-500\"\n disabled={state.isLoading}\n />\n <span className=\"text-gray-700 dark:text-gray-300\">Remember me</span>\n </label>\n )}\n\n <Button\n type=\"submit\"\n variant=\"primary\"\n disabled={state.isLoading}\n className=\"w-full\"\n >\n {state.isLoading ? (\n <>\n <Spinner size=\"sm\" color=\"white\" className=\"mr-2\" />\n Signing in...\n </>\n ) : (\n 'Sign in'\n )}\n </Button>\n\n {(forgotPasswordLink || registerLink) && (\n <div className=\"flex items-center justify-between text-sm\">\n {forgotPasswordLink && (\n <a\n href={forgotPasswordLink}\n className=\"text-blue-600 hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300\"\n >\n Forgot password?\n </a>\n )}\n {registerLink && (\n <a\n href={registerLink}\n className=\"text-blue-600 hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300\"\n >\n Create an account\n </a>\n )}\n </div>\n )}\n </form>\n )\n}\n","'use client'\n\nimport { useState, FormEvent } from 'react'\nimport { TextInput, Button, Spinner } from '@marcoschwartz/lite-ui'\nimport type { RegisterFormProps, RegisterSuccessData, RegisterFormState } from './types'\n\nexport type { RegisterFormProps, RegisterSuccessData }\n\nexport function RegisterForm({\n apiUrl,\n projectId,\n onSuccess,\n onError,\n requireUsername = false,\n showDisplayName = false,\n showOrganizationName = false,\n showTerms = false,\n termsLink,\n className = '',\n loginLink,\n}: RegisterFormProps) {\n const [state, setState] = useState<RegisterFormState>({\n email: '',\n username: '',\n password: '',\n confirmPassword: '',\n displayName: '',\n organizationName: '',\n acceptTerms: false,\n isLoading: false,\n error: null,\n fieldErrors: {},\n })\n\n const validateForm = (): boolean => {\n const errors: RegisterFormState['fieldErrors'] = {}\n\n // Email validation\n if (!state.email) {\n errors.email = 'Email is required'\n } else if (!/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(state.email)) {\n errors.email = 'Please enter a valid email address'\n }\n\n // Username validation (if required)\n if (requireUsername && !state.username) {\n errors.username = 'Username is required'\n } else if (state.username && state.username.length < 3) {\n errors.username = 'Username must be at least 3 characters'\n }\n\n // Password validation\n if (!state.password) {\n errors.password = 'Password is required'\n } else if (state.password.length < 6) {\n errors.password = 'Password must be at least 6 characters'\n }\n\n // Confirm password\n if (state.password !== state.confirmPassword) {\n errors.confirmPassword = 'Passwords do not match'\n }\n\n setState(prev => ({ ...prev, fieldErrors: errors }))\n return Object.keys(errors).length === 0\n }\n\n const handleSubmit = async (e: FormEvent) => {\n e.preventDefault()\n\n if (!validateForm()) return\n\n if (showTerms && !state.acceptTerms) {\n setState(prev => ({ ...prev, error: 'You must accept the terms and conditions' }))\n return\n }\n\n setState(prev => ({ ...prev, isLoading: true, error: null }))\n\n try {\n const payload: Record<string, any> = {\n email: state.email,\n password: state.password,\n project_id: projectId,\n }\n\n if (state.username) {\n payload.username = state.username\n }\n if (state.displayName) {\n payload.display_name = state.displayName\n }\n if (state.organizationName) {\n payload.organization_name = state.organizationName\n }\n\n const response = await fetch(`${apiUrl}/auth/register`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(payload),\n })\n\n const data = await response.json()\n\n if (!response.ok) {\n throw new Error(data.error || 'Registration failed')\n }\n\n onSuccess?.(data as RegisterSuccessData)\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Registration failed')\n setState(prev => ({ ...prev, error: error.message }))\n onError?.(error)\n } finally {\n setState(prev => ({ ...prev, isLoading: false }))\n }\n }\n\n return (\n <form onSubmit={handleSubmit} className={`space-y-4 ${className}`}>\n {state.error && (\n <div className=\"p-3 text-sm text-red-600 bg-red-50 dark:bg-red-900/20 dark:text-red-400 rounded-md\">\n {state.error}\n </div>\n )}\n\n <TextInput\n label=\"Email\"\n type=\"email\"\n value={state.email}\n onChange={(e) => setState(prev => ({ ...prev, email: e.target.value, fieldErrors: { ...prev.fieldErrors, email: undefined } }))}\n placeholder=\"you@example.com\"\n required\n disabled={state.isLoading}\n fullWidth\n autoComplete=\"email\"\n error={state.fieldErrors.email}\n />\n\n {requireUsername && (\n <TextInput\n label=\"Username\"\n type=\"text\"\n value={state.username}\n onChange={(e) => setState(prev => ({ ...prev, username: e.target.value, fieldErrors: { ...prev.fieldErrors, username: undefined } }))}\n placeholder=\"Choose a username\"\n required\n disabled={state.isLoading}\n fullWidth\n autoComplete=\"username\"\n error={state.fieldErrors.username}\n />\n )}\n\n {showDisplayName && (\n <TextInput\n label=\"Display Name\"\n type=\"text\"\n value={state.displayName}\n onChange={(e) => setState(prev => ({ ...prev, displayName: e.target.value }))}\n placeholder=\"Your display name\"\n disabled={state.isLoading}\n fullWidth\n />\n )}\n\n {showOrganizationName && (\n <TextInput\n label=\"Organization Name\"\n type=\"text\"\n value={state.organizationName}\n onChange={(e) => setState(prev => ({ ...prev, organizationName: e.target.value }))}\n placeholder=\"Your organization (optional)\"\n disabled={state.isLoading}\n fullWidth\n />\n )}\n\n <TextInput\n label=\"Password\"\n type=\"password\"\n value={state.password}\n onChange={(e) => setState(prev => ({ ...prev, password: e.target.value, fieldErrors: { ...prev.fieldErrors, password: undefined } }))}\n placeholder=\"At least 6 characters\"\n required\n disabled={state.isLoading}\n fullWidth\n autoComplete=\"new-password\"\n error={state.fieldErrors.password}\n />\n\n <TextInput\n label=\"Confirm Password\"\n type=\"password\"\n value={state.confirmPassword}\n onChange={(e) => setState(prev => ({ ...prev, confirmPassword: e.target.value, fieldErrors: { ...prev.fieldErrors, confirmPassword: undefined } }))}\n placeholder=\"Confirm your password\"\n required\n disabled={state.isLoading}\n fullWidth\n autoComplete=\"new-password\"\n error={state.fieldErrors.confirmPassword}\n />\n\n {showTerms && (\n <label className=\"flex items-start gap-2 text-sm\">\n <input\n type=\"checkbox\"\n checked={state.acceptTerms}\n onChange={(e) => setState(prev => ({ ...prev, acceptTerms: e.target.checked }))}\n className=\"mt-1 rounded border-gray-300 text-blue-600 focus:ring-blue-500\"\n disabled={state.isLoading}\n />\n <span className=\"text-gray-700 dark:text-gray-300\">\n I agree to the{' '}\n {termsLink ? (\n <a href={termsLink} className=\"text-blue-600 hover:underline\" target=\"_blank\" rel=\"noopener noreferrer\">\n terms and conditions\n </a>\n ) : (\n 'terms and conditions'\n )}\n </span>\n </label>\n )}\n\n <Button\n type=\"submit\"\n variant=\"primary\"\n disabled={state.isLoading}\n className=\"w-full\"\n >\n {state.isLoading ? (\n <>\n <Spinner size=\"sm\" color=\"white\" className=\"mr-2\" />\n Creating account...\n </>\n ) : (\n 'Create account'\n )}\n </Button>\n\n {loginLink && (\n <p className=\"text-center text-sm text-gray-600 dark:text-gray-400\">\n Already have an account?{' '}\n <a\n href={loginLink}\n className=\"text-blue-600 hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300\"\n >\n Sign in\n </a>\n </p>\n )}\n </form>\n )\n}\n","'use client'\n\nimport { useState, FormEvent } from 'react'\nimport { TextInput, Button, Spinner } from '@marcoschwartz/lite-ui'\nimport type { ForgotPasswordFormProps, ForgotPasswordFormState } from './types'\n\nexport type { ForgotPasswordFormProps }\n\nexport function ForgotPasswordForm({\n apiUrl,\n projectId,\n resetPasswordUrl,\n onSuccess,\n onError,\n className = '',\n loginLink,\n}: ForgotPasswordFormProps) {\n const [state, setState] = useState<ForgotPasswordFormState>({\n email: '',\n isLoading: false,\n isSuccess: false,\n error: null,\n })\n\n const handleSubmit = async (e: FormEvent) => {\n e.preventDefault()\n setState(prev => ({ ...prev, isLoading: true, error: null }))\n\n try {\n const response = await fetch(`${apiUrl}/auth/forgot-password`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n email: state.email,\n project_id: projectId,\n frontendUrl: resetPasswordUrl,\n }),\n })\n\n const data = await response.json()\n\n if (!response.ok) {\n throw new Error(data.error || 'Failed to send reset email')\n }\n\n setState(prev => ({ ...prev, isSuccess: true }))\n onSuccess?.()\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to send reset email')\n setState(prev => ({ ...prev, error: error.message }))\n onError?.(error)\n } finally {\n setState(prev => ({ ...prev, isLoading: false }))\n }\n }\n\n if (state.isSuccess) {\n return (\n <div className={`space-y-4 ${className}`}>\n <div className=\"p-4 text-center rounded-md bg-green-50 dark:bg-green-900/20\">\n <svg\n className=\"w-12 h-12 mx-auto mb-3 text-green-500\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z\"\n />\n </svg>\n <h3 className=\"text-lg font-medium text-green-800 dark:text-green-200\">\n Check your email\n </h3>\n <p className=\"mt-2 text-sm text-green-700 dark:text-green-300\">\n If an account with that email exists, we've sent you a password reset link.\n </p>\n </div>\n\n {loginLink && (\n <p className=\"text-center text-sm text-gray-600 dark:text-gray-400\">\n <a\n href={loginLink}\n className=\"text-blue-600 hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300\"\n >\n Back to sign in\n </a>\n </p>\n )}\n </div>\n )\n }\n\n return (\n <form onSubmit={handleSubmit} className={`space-y-4 ${className}`}>\n <div className=\"text-center mb-6\">\n <h2 className=\"text-xl font-semibold text-gray-900 dark:text-white\">\n Forgot your password?\n </h2>\n <p className=\"mt-2 text-sm text-gray-600 dark:text-gray-400\">\n Enter your email and we'll send you a reset link.\n </p>\n </div>\n\n {state.error && (\n <div className=\"p-3 text-sm text-red-600 bg-red-50 dark:bg-red-900/20 dark:text-red-400 rounded-md\">\n {state.error}\n </div>\n )}\n\n <TextInput\n label=\"Email\"\n type=\"email\"\n value={state.email}\n onChange={(e) => setState(prev => ({ ...prev, email: e.target.value }))}\n placeholder=\"you@example.com\"\n required\n disabled={state.isLoading}\n fullWidth\n autoComplete=\"email\"\n />\n\n <Button\n type=\"submit\"\n variant=\"primary\"\n disabled={state.isLoading}\n className=\"w-full\"\n >\n {state.isLoading ? (\n <>\n <Spinner size=\"sm\" color=\"white\" className=\"mr-2\" />\n Sending...\n </>\n ) : (\n 'Send reset link'\n )}\n </Button>\n\n {loginLink && (\n <p className=\"text-center text-sm text-gray-600 dark:text-gray-400\">\n Remember your password?{' '}\n <a\n href={loginLink}\n className=\"text-blue-600 hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300\"\n >\n Sign in\n </a>\n </p>\n )}\n </form>\n )\n}\n","'use client'\n\nimport { useState, FormEvent } from 'react'\nimport { TextInput, Button, Spinner } from '@marcoschwartz/lite-ui'\nimport type { ResetPasswordFormProps, ResetPasswordFormState } from './types'\n\nexport type { ResetPasswordFormProps }\n\nexport function ResetPasswordForm({\n apiUrl,\n token,\n onSuccess,\n onError,\n className = '',\n loginLink,\n}: ResetPasswordFormProps) {\n const [state, setState] = useState<ResetPasswordFormState>({\n password: '',\n confirmPassword: '',\n isLoading: false,\n isSuccess: false,\n error: null,\n fieldErrors: {},\n })\n\n const validateForm = (): boolean => {\n const errors: ResetPasswordFormState['fieldErrors'] = {}\n\n if (!state.password) {\n errors.password = 'Password is required'\n } else if (state.password.length < 6) {\n errors.password = 'Password must be at least 6 characters'\n }\n\n if (state.password !== state.confirmPassword) {\n errors.confirmPassword = 'Passwords do not match'\n }\n\n setState(prev => ({ ...prev, fieldErrors: errors }))\n return Object.keys(errors).length === 0\n }\n\n const handleSubmit = async (e: FormEvent) => {\n e.preventDefault()\n\n if (!validateForm()) return\n\n setState(prev => ({ ...prev, isLoading: true, error: null }))\n\n try {\n const response = await fetch(`${apiUrl}/auth/reset-password`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n token,\n password: state.password,\n sendConfirmationEmail: true,\n }),\n })\n\n const data = await response.json()\n\n if (!response.ok) {\n throw new Error(data.error || 'Failed to reset password')\n }\n\n setState(prev => ({ ...prev, isSuccess: true }))\n onSuccess?.()\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to reset password')\n setState(prev => ({ ...prev, error: error.message }))\n onError?.(error)\n } finally {\n setState(prev => ({ ...prev, isLoading: false }))\n }\n }\n\n if (state.isSuccess) {\n return (\n <div className={`space-y-4 ${className}`}>\n <div className=\"p-4 text-center rounded-md bg-green-50 dark:bg-green-900/20\">\n <svg\n className=\"w-12 h-12 mx-auto mb-3 text-green-500\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n <h3 className=\"text-lg font-medium text-green-800 dark:text-green-200\">\n Password reset successful\n </h3>\n <p className=\"mt-2 text-sm text-green-700 dark:text-green-300\">\n Your password has been updated. You can now sign in with your new password.\n </p>\n </div>\n\n {loginLink && (\n <div className=\"text-center\">\n <a\n href={loginLink}\n className=\"inline-flex items-center justify-center px-4 py-2 text-sm font-medium text-white bg-blue-600 rounded-md hover:bg-blue-700\"\n >\n Go to sign in\n </a>\n </div>\n )}\n </div>\n )\n }\n\n if (!token) {\n return (\n <div className={`space-y-4 ${className}`}>\n <div className=\"p-4 text-center rounded-md bg-red-50 dark:bg-red-900/20\">\n <svg\n className=\"w-12 h-12 mx-auto mb-3 text-red-500\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"\n />\n </svg>\n <h3 className=\"text-lg font-medium text-red-800 dark:text-red-200\">\n Invalid reset link\n </h3>\n <p className=\"mt-2 text-sm text-red-700 dark:text-red-300\">\n This password reset link is invalid or has expired.\n </p>\n </div>\n\n {loginLink && (\n <p className=\"text-center text-sm text-gray-600 dark:text-gray-400\">\n <a\n href={loginLink}\n className=\"text-blue-600 hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300\"\n >\n Back to sign in\n </a>\n </p>\n )}\n </div>\n )\n }\n\n return (\n <form onSubmit={handleSubmit} className={`space-y-4 ${className}`}>\n <div className=\"text-center mb-6\">\n <h2 className=\"text-xl font-semibold text-gray-900 dark:text-white\">\n Reset your password\n </h2>\n <p className=\"mt-2 text-sm text-gray-600 dark:text-gray-400\">\n Enter your new password below.\n </p>\n </div>\n\n {state.error && (\n <div className=\"p-3 text-sm text-red-600 bg-red-50 dark:bg-red-900/20 dark:text-red-400 rounded-md\">\n {state.error}\n </div>\n )}\n\n <TextInput\n label=\"New Password\"\n type=\"password\"\n value={state.password}\n onChange={(e) => setState(prev => ({ ...prev, password: e.target.value, fieldErrors: { ...prev.fieldErrors, password: undefined } }))}\n placeholder=\"At least 6 characters\"\n required\n disabled={state.isLoading}\n fullWidth\n autoComplete=\"new-password\"\n error={state.fieldErrors.password}\n />\n\n <TextInput\n label=\"Confirm Password\"\n type=\"password\"\n value={state.confirmPassword}\n onChange={(e) => setState(prev => ({ ...prev, confirmPassword: e.target.value, fieldErrors: { ...prev.fieldErrors, confirmPassword: undefined } }))}\n placeholder=\"Confirm your new password\"\n required\n disabled={state.isLoading}\n fullWidth\n autoComplete=\"new-password\"\n error={state.fieldErrors.confirmPassword}\n />\n\n <Button\n type=\"submit\"\n variant=\"primary\"\n disabled={state.isLoading}\n className=\"w-full\"\n >\n {state.isLoading ? (\n <>\n <Spinner size=\"sm\" color=\"white\" className=\"mr-2\" />\n Resetting password...\n </>\n ) : (\n 'Reset password'\n )}\n </Button>\n\n {loginLink && (\n <p className=\"text-center text-sm text-gray-600 dark:text-gray-400\">\n Remember your password?{' '}\n <a\n href={loginLink}\n className=\"text-blue-600 hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300\"\n >\n Sign in\n </a>\n </p>\n )}\n </form>\n )\n}\n","import type {\n PresignedUrlResponse,\n ConfirmUploadResponse,\n UploadPartResult,\n UploadedFile,\n} from './types'\n\nconst DEFAULT_PART_SIZE = 5 * 1024 * 1024 // 5MB\nconst DEFAULT_MULTIPART_THRESHOLD = 5 * 1024 * 1024 // 5MB\nconst DEFAULT_MAX_CONCURRENT_PARTS = 5\nconst EMA_ALPHA = 0.3\n\nexport interface UploadConfig {\n apiUrl: string\n projectId: number\n bucketId?: number\n folderId?: number\n accessLevel?: 'private' | 'public'\n apiKey?: string\n accessToken?: string\n partSize?: number\n maxConcurrentParts?: number\n onProgress?: (bytesUploaded: number, totalBytes: number, speed: number) => void\n}\n\nfunction getAuthHeaders(config: UploadConfig): HeadersInit {\n const headers: HeadersInit = {\n 'Content-Type': 'application/json',\n }\n if (config.accessToken) {\n headers['Authorization'] = `Bearer ${config.accessToken}`\n } else if (config.apiKey) {\n headers['X-API-Key'] = config.apiKey\n }\n return headers\n}\n\nexport async function generatePresignedUrl(\n file: File,\n config: UploadConfig,\n isMultipart: boolean,\n numParts?: number\n): Promise<PresignedUrlResponse> {\n const response = await fetch(`${config.apiUrl}/storage/generate-presigned-url`, {\n method: 'POST',\n headers: getAuthHeaders(config),\n body: JSON.stringify({\n file_name: file.name,\n file_size: file.size,\n mime_type: file.type || 'application/octet-stream',\n project_id: config.projectId,\n bucket_id: config.bucketId,\n folder_id: config.folderId,\n access_level: config.accessLevel || 'private',\n is_multipart: isMultipart,\n num_parts: numParts,\n }),\n })\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({}))\n throw new Error(errorData.error || 'Failed to generate presigned URL')\n }\n\n return response.json()\n}\n\nexport async function confirmUpload(\n fileId: string,\n config: UploadConfig,\n parts?: Array<{ partNumber: number; etag: string }>\n): Promise<ConfirmUploadResponse> {\n const response = await fetch(`${config.apiUrl}/storage/confirm-upload`, {\n method: 'POST',\n headers: getAuthHeaders(config),\n body: JSON.stringify({\n file_id: fileId,\n parts: parts,\n }),\n })\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({}))\n throw new Error(errorData.error || 'Failed to confirm upload')\n }\n\n return response.json()\n}\n\nexport async function uploadSingleFile(\n file: File,\n config: UploadConfig\n): Promise<UploadedFile> {\n // Step 1: Get presigned URL\n const presignedResponse = await generatePresignedUrl(file, config, false)\n const { file_id, upload_url } = presignedResponse.data\n\n if (!upload_url) {\n throw new Error('No upload URL received')\n }\n\n // Step 2: Upload to presigned URL\n const uploadResponse = await fetch(upload_url, {\n method: 'PUT',\n body: file,\n headers: {\n 'Content-Type': file.type || 'application/octet-stream',\n },\n })\n\n if (!uploadResponse.ok) {\n throw new Error(`Upload failed: ${uploadResponse.status}`)\n }\n\n // Report progress\n config.onProgress?.(file.size, file.size, 0)\n\n // Step 3: Confirm upload\n const confirmResponse = await confirmUpload(file_id, config)\n\n return {\n id: confirmResponse.data.id,\n name: confirmResponse.data.name,\n size: confirmResponse.data.size_bytes,\n mimeType: confirmResponse.data.mime_type,\n url: confirmResponse.data.storage_url,\n }\n}\n\nexport async function uploadMultipartFile(\n file: File,\n config: UploadConfig,\n abortSignal?: AbortSignal\n): Promise<UploadedFile> {\n const partSize = config.partSize || DEFAULT_PART_SIZE\n const maxConcurrentParts = config.maxConcurrentParts || DEFAULT_MAX_CONCURRENT_PARTS\n const numParts = Math.ceil(file.size / partSize)\n\n // Step 1: Get presigned URLs for all parts\n const presignedResponse = await generatePresignedUrl(file, config, true, numParts)\n const { file_id, parts } = presignedResponse.data\n\n if (!parts || parts.length === 0) {\n throw new Error('No part URLs received')\n }\n\n // Step 2: Upload parts with sliding window\n const uploadedParts: UploadPartResult[] = []\n let bytesUploaded = 0\n const uploadStartTime = Date.now()\n let smoothedSpeed = 0\n\n // Create parts queue\n const partsQueue = parts.map(p => ({ part_number: p.part_number, url: p.url }))\n const inFlight = new Map<number, Promise<UploadPartResult>>()\n\n // Upload a single part\n const uploadPart = async (part: { part_number: number; url: string }): Promise<UploadPartResult> => {\n if (abortSignal?.aborted) {\n throw new Error('Upload cancelled')\n }\n\n const start = (part.part_number - 1) * partSize\n const end = Math.min(start + partSize, file.size)\n const partBlob = file.slice(start, end)\n const partBytes = partBlob.size\n\n const uploadResponse = await fetch(part.url, {\n method: 'PUT',\n body: partBlob,\n headers: {\n 'Content-Type': file.type || 'application/octet-stream',\n },\n signal: abortSignal,\n })\n\n if (!uploadResponse.ok) {\n throw new Error(`Part ${part.part_number} upload failed: ${uploadResponse.status}`)\n }\n\n const etag = uploadResponse.headers.get('ETag')?.replace(/\"/g, '') || ''\n\n return {\n partNumber: part.part_number,\n etag,\n bytes: partBytes,\n }\n }\n\n // Wait for any upload to complete\n const waitForAny = async (): Promise<UploadPartResult> => {\n const entries = Array.from(inFlight.entries())\n const result = await Promise.race(entries.map(([partNum, promise]) =>\n promise.then(result => ({ partNum, result }))\n ))\n inFlight.delete(result.partNum)\n return result.result\n }\n\n // Start initial batch\n while (inFlight.size < maxConcurrentParts && partsQueue.length > 0) {\n const part = partsQueue.shift()!\n inFlight.set(part.part_number, uploadPart(part))\n }\n\n // Process as uploads complete\n while (inFlight.size > 0) {\n const completed = await waitForAny()\n\n uploadedParts.push({\n partNumber: completed.partNumber,\n etag: completed.etag,\n bytes: completed.bytes,\n })\n\n bytesUploaded += completed.bytes\n\n // Calculate smoothed speed\n const elapsed = (Date.now() - uploadStartTime) / 1000\n const instantSpeed = elapsed > 0 ? bytesUploaded / elapsed : 0\n smoothedSpeed = smoothedSpeed === 0\n ? instantSpeed\n : EMA_ALPHA * instantSpeed + (1 - EMA_ALPHA) * smoothedSpeed\n\n // Report progress\n config.onProgress?.(bytesUploaded, file.size, smoothedSpeed)\n\n // Start next upload if there are more parts\n if (partsQueue.length > 0) {\n const nextPart = partsQueue.shift()!\n inFlight.set(nextPart.part_number, uploadPart(nextPart))\n }\n }\n\n // Step 3: Confirm upload with ETags\n const sortedParts = uploadedParts\n .sort((a, b) => a.partNumber - b.partNumber)\n .map(p => ({ partNumber: p.partNumber, etag: p.etag }))\n\n const confirmResponse = await confirmUpload(file_id, config, sortedParts)\n\n return {\n id: confirmResponse.data.id,\n name: confirmResponse.data.name,\n size: confirmResponse.data.size_bytes,\n mimeType: confirmResponse.data.mime_type,\n url: confirmResponse.data.storage_url,\n }\n}\n\nexport async function uploadFile(\n file: File,\n config: UploadConfig,\n abortSignal?: AbortSignal\n): Promise<UploadedFile> {\n const multipartThreshold = DEFAULT_MULTIPART_THRESHOLD\n\n if (file.size >= multipartThreshold) {\n return uploadMultipartFile(file, config, abortSignal)\n } else {\n return uploadSingleFile(file, config)\n }\n}\n\nexport function formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 B'\n const k = 1024\n const sizes = ['B', 'KB', 'MB', 'GB', 'TB']\n const i = Math.floor(Math.log(bytes) / Math.log(k))\n return `${(bytes / Math.pow(k, i)).toFixed(1)} ${sizes[i]}`\n}\n\nexport function formatSpeed(bytesPerSec: number): string {\n return `${formatFileSize(bytesPerSec)}/s`\n}\n\nexport function formatEta(seconds: number): string {\n if (!isFinite(seconds) || seconds <= 0) return '--'\n if (seconds < 60) return `${Math.round(seconds)}s`\n if (seconds < 3600) return `${Math.round(seconds / 60)}m`\n return `${Math.round(seconds / 3600)}h ${Math.round((seconds % 3600) / 60)}m`\n}\n\nexport function generateUploadId(): string {\n return `upload-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n}\n","'use client'\n\nimport { useState, useRef, useCallback, useEffect } from 'react'\nimport { Button, Spinner } from '@marcoschwartz/lite-ui'\nimport type {\n FileUploaderProps,\n FileUploadState,\n UploadProgress,\n UploadedFile,\n} from './types'\nimport {\n uploadFile,\n formatFileSize,\n formatSpeed,\n generateUploadId,\n type UploadConfig,\n} from './upload-utils'\n\nexport type { FileUploaderProps, UploadProgress, UploadedFile, FileUploadState }\n\nconst DEFAULT_MAX_CONCURRENT_FILES = 3\nconst DEFAULT_MULTIPART_THRESHOLD = 5 * 1024 * 1024\n\nexport function FileUploader({\n apiUrl,\n projectId,\n bucketId,\n folderId,\n accessLevel = 'private',\n autoUpload = true,\n maxConcurrentFiles = DEFAULT_MAX_CONCURRENT_FILES,\n maxConcurrentParts = 5,\n multipartThreshold = DEFAULT_MULTIPART_THRESHOLD,\n partSize = 5 * 1024 * 1024,\n accept,\n maxFileSize,\n maxFiles = 10,\n onUploadComplete,\n onUploadError,\n onAllUploadsComplete,\n onProgress,\n onFilesSelected,\n apiKey,\n accessToken,\n className = '',\n showFileList = true,\n showProgress = true,\n label,\n helperText,\n disabled = false,\n}: FileUploaderProps) {\n const [uploads, setUploads] = useState<FileUploadState[]>([])\n const [isDragging, setIsDragging] = useState(false)\n const [overallProgress, setOverallProgress] = useState<UploadProgress | null>(null)\n const fileInputRef = useRef<HTMLInputElement>(null)\n const abortControllersRef = useRef<Map<string, AbortController>>(new Map())\n const uploadedFilesRef = useRef<UploadedFile[]>([])\n\n // Cleanup abort controllers on unmount\n useEffect(() => {\n return () => {\n abortControllersRef.current.forEach(controller => controller.abort())\n }\n }, [])\n\n const validateFile = useCallback((file: File): string | null => {\n if (maxFileSize && file.size > maxFileSize) {\n return `File exceeds maximum size of ${formatFileSize(maxFileSize)}`\n }\n return null\n }, [maxFileSize])\n\n const updateUploadState = useCallback((id: string, updates: Partial<FileUploadState>) => {\n setUploads(prev => prev.map(u => u.id === id ? { ...u, ...updates } : u))\n }, [])\n\n const calculateOverallProgress = useCallback(() => {\n setUploads(currentUploads => {\n const totalBytes = currentUploads.reduce((sum, u) => sum + u.file.size, 0)\n const bytesUploaded = currentUploads.reduce((sum, u) => sum + u.bytesUploaded, 0)\n const completedFiles = currentUploads.filter(u => u.status === 'completed').length\n const percentage = totalBytes > 0 ? Math.round((bytesUploaded / totalBytes) * 100) : 0\n\n const progress: UploadProgress = {\n totalFiles: currentUploads.length,\n completedFiles,\n bytesUploaded,\n totalBytes,\n percentage,\n speed: 0,\n eta: 0,\n }\n\n setOverallProgress(progress)\n onProgress?.(progress)\n\n return currentUploads\n })\n }, [onProgress])\n\n const uploadSingleFile = useCallback(async (uploadState: FileUploadState) => {\n const { id, file } = uploadState\n const abortController = new AbortController()\n abortControllersRef.current.set(id, abortController)\n\n const config: UploadConfig = {\n apiUrl,\n projectId,\n bucketId,\n folderId,\n accessLevel,\n apiKey,\n accessToken,\n partSize,\n maxConcurrentParts,\n onProgress: (bytesUploaded, totalBytes, _speed) => {\n const progress = Math.round((bytesUploaded / totalBytes) * 100)\n updateUploadState(id, { progress, bytesUploaded })\n calculateOverallProgress()\n },\n }\n\n try {\n updateUploadState(id, { status: 'uploading', progress: 0 })\n\n const result = await uploadFile(file, config, abortController.signal)\n\n updateUploadState(id, {\n status: 'completed',\n progress: 100,\n bytesUploaded: file.size,\n result,\n })\n\n uploadedFilesRef.current.push(result)\n onUploadComplete?.(result)\n\n return result\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Upload failed'\n updateUploadState(id, { status: 'error', error: errorMessage })\n onUploadError?.(file, error instanceof Error ? error : new Error(errorMessage))\n throw error\n } finally {\n abortControllersRef.current.delete(id)\n calculateOverallProgress()\n }\n }, [\n apiUrl,\n projectId,\n bucketId,\n folderId,\n accessLevel,\n apiKey,\n accessToken,\n partSize,\n maxConcurrentParts,\n updateUploadState,\n calculateOverallProgress,\n onUploadComplete,\n onUploadError,\n ])\n\n const startUploads = useCallback(async (uploadStates: FileUploadState[]) => {\n uploadedFilesRef.current = []\n const pending = [...uploadStates]\n const inProgress: Promise<void>[] = []\n\n const processNext = async () => {\n while (pending.length > 0 && inProgress.length < maxConcurrentFiles) {\n const next = pending.shift()!\n const promise = uploadSingleFile(next)\n .catch(() => {}) // Errors handled in uploadSingleFile\n .finally(() => {\n const index = inProgress.indexOf(promise as unknown as Promise<void>)\n if (index > -1) inProgress.splice(index, 1)\n processNext()\n })\n inProgress.push(promise as unknown as Promise<void>)\n }\n }\n\n await processNext()\n\n // Wait for all uploads to complete\n while (inProgress.length > 0) {\n await Promise.race(inProgress)\n }\n\n // Call onAllUploadsComplete with successful uploads\n if (uploadedFilesRef.current.length > 0) {\n onAllUploadsComplete?.(uploadedFilesRef.current)\n }\n }, [maxConcurrentFiles, uploadSingleFile, onAllUploadsComplete])\n\n const handleFiles = useCallback((files: FileList | File[]) => {\n const fileArray = Array.from(files)\n\n // Check max files\n if (uploads.length + fileArray.length > maxFiles) {\n const allowed = maxFiles - uploads.length\n if (allowed <= 0) return\n fileArray.splice(allowed)\n }\n\n // Validate and create upload states\n const newUploads: FileUploadState[] = []\n for (const file of fileArray) {\n const error = validateFile(file)\n if (error) {\n onUploadError?.(file, new Error(error))\n continue\n }\n\n newUploads.push({\n id: generateUploadId(),\n file,\n status: 'pending',\n progress: 0,\n bytesUploaded: 0,\n })\n }\n\n if (newUploads.length === 0) return\n\n setUploads(prev => [...prev, ...newUploads])\n onFilesSelected?.(newUploads.map(u => u.file))\n\n if (autoUpload) {\n // Start uploads after state update\n setTimeout(() => startUploads(newUploads), 0)\n }\n }, [uploads.length, maxFiles, validateFile, autoUpload, startUploads, onFilesSelected, onUploadError])\n\n const handleDrop = useCallback((e: React.DragEvent) => {\n e.preventDefault()\n setIsDragging(false)\n if (!disabled) {\n handleFiles(e.dataTransfer.files)\n }\n }, [disabled, handleFiles])\n\n const handleDragOver = useCallback((e: React.DragEvent) => {\n e.preventDefault()\n if (!disabled) setIsDragging(true)\n }, [disabled])\n\n const handleDragLeave = useCallback((e: React.DragEvent) => {\n e.preventDefault()\n setIsDragging(false)\n }, [])\n\n const handleClick = useCallback(() => {\n if (!disabled) {\n fileInputRef.current?.click()\n }\n }, [disabled])\n\n const handleInputChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files) {\n handleFiles(e.target.files)\n e.target.value = '' // Reset for same file selection\n }\n }, [handleFiles])\n\n const handleRemoveFile = useCallback((id: string) => {\n const controller = abortControllersRef.current.get(id)\n if (controller) {\n controller.abort()\n abortControllersRef.current.delete(id)\n }\n setUploads(prev => prev.filter(u => u.id !== id))\n }, [])\n\n const handleRetry = useCallback((uploadState: FileUploadState) => {\n updateUploadState(uploadState.id, { status: 'pending', progress: 0, error: undefined, bytesUploaded: 0 })\n startUploads([uploadState])\n }, [updateUploadState, startUploads])\n\n const handleStartUpload = useCallback(() => {\n const pendingUploads = uploads.filter(u => u.status === 'pending')\n if (pendingUploads.length > 0) {\n startUploads(pendingUploads)\n }\n }, [uploads, startUploads])\n\n const isUploading = uploads.some(u => u.status === 'uploading')\n const hasPendingFiles = uploads.some(u => u.status === 'pending')\n\n return (\n <div className={`w-full ${className}`}>\n {label && (\n <label className=\"block text-sm font-medium text-gray-900 dark:text-gray-100 mb-2\">\n {label}\n </label>\n )}\n\n {/* Drop Zone */}\n <div\n onDrop={handleDrop}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onClick={handleClick}\n className={`\n relative border-2 border-dashed rounded-lg p-8 text-center cursor-pointer transition-all\n ${isDragging\n ? 'border-blue-500 bg-blue-50 dark:bg-blue-900/20'\n : 'border-gray-300 dark:border-gray-600 hover:border-gray-400 dark:hover:border-gray-500'\n }\n ${disabled ? 'opacity-50 cursor-not-allowed' : ''}\n `}\n >\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={accept}\n multiple={maxFiles > 1}\n onChange={handleInputChange}\n disabled={disabled}\n className=\"hidden\"\n />\n\n <div className=\"flex flex-col items-center gap-2\">\n <div className=\"w-12 h-12 rounded-full bg-gray-100 dark:bg-gray-800 flex items-center justify-center\">\n <svg className=\"w-6 h-6 text-gray-400\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12\" />\n </svg>\n </div>\n <div>\n <p className=\"text-sm font-medium text-gray-900 dark:text-gray-100\">\n <span className=\"text-blue-600 dark:text-blue-400\">Click to upload</span> or drag and drop\n </p>\n <p className=\"text-xs text-gray-500 dark:text-gray-400 mt-1\">\n {accept ? `Accepted: ${accept}` : 'Any file type'}\n {maxFileSize && ` · Max: ${formatFileSize(maxFileSize)}`}\n </p>\n </div>\n </div>\n </div>\n\n {helperText && (\n <p className=\"mt-2 text-sm text-gray-500 dark:text-gray-400\">{helperText}</p>\n )}\n\n {/* Overall Progress */}\n {showProgress && overallProgress && isUploading && (\n <div className=\"mt-4 p-3 bg-gray-50 dark:bg-gray-800 rounded-lg\">\n <div className=\"flex items-center justify-between text-sm mb-2\">\n <span className=\"text-gray-700 dark:text-gray-300\">\n Uploading {overallProgress.completedFiles + 1} of {overallProgress.totalFiles}\n </span>\n <span className=\"text-gray-500 dark:text-gray-400\">\n {overallProgress.percentage}%\n </span>\n </div>\n <div className=\"w-full h-2 bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden\">\n <div\n className=\"h-full bg-blue-600 transition-all duration-300\"\n style={{ width: `${overallProgress.percentage}%` }}\n />\n </div>\n <div className=\"flex items-center justify-between text-xs text-gray-500 dark:text-gray-400 mt-1\">\n <span>{formatFileSize(overallProgress.bytesUploaded)} / {formatFileSize(overallProgress.totalBytes)}</span>\n {overallProgress.speed > 0 && (\n <span>{formatSpeed(overallProgress.speed)}</span>\n )}\n </div>\n </div>\n )}\n\n {/* File List */}\n {showFileList && uploads.length > 0 && (\n <div className=\"mt-4 space-y-2\">\n {uploads.map((upload) => (\n <div\n key={upload.id}\n className=\"flex items-center gap-3 p-3 bg-gray-50 dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700\"\n >\n {/* File Icon */}\n <div className=\"w-10 h-10 rounded bg-gray-200 dark:bg-gray-700 flex items-center justify-center flex-shrink-0\">\n {upload.status === 'uploading' ? (\n <Spinner size=\"sm\" />\n ) : upload.status === 'completed' ? (\n <svg className=\"w-5 h-5 text-green-500\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 13l4 4L19 7\" />\n </svg>\n ) : upload.status === 'error' ? (\n <svg className=\"w-5 h-5 text-red-500\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n ) : (\n <svg className=\"w-5 h-5 text-gray-400\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\" />\n </svg>\n )}\n </div>\n\n {/* File Info */}\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-gray-900 dark:text-gray-100 truncate\">\n {upload.file.name}\n </p>\n <div className=\"flex items-center gap-2 text-xs text-gray-500 dark:text-gray-400\">\n <span>{formatFileSize(upload.file.size)}</span>\n {upload.status === 'uploading' && (\n <span>· {upload.progress}%</span>\n )}\n {upload.status === 'error' && (\n <span className=\"text-red-500\">{upload.error}</span>\n )}\n {upload.file.size >= multipartThreshold && upload.status === 'pending' && (\n <span className=\"text-blue-500\">Multipart</span>\n )}\n </div>\n\n {/* Progress Bar */}\n {upload.status === 'uploading' && (\n <div className=\"w-full h-1 bg-gray-200 dark:bg-gray-700 rounded-full mt-2 overflow-hidden\">\n <div\n className=\"h-full bg-blue-600 transition-all duration-300\"\n style={{ width: `${upload.progress}%` }}\n />\n </div>\n )}\n </div>\n\n {/* Actions */}\n <div className=\"flex items-center gap-1 flex-shrink-0\">\n {upload.status === 'error' && (\n <button\n onClick={() => handleRetry(upload)}\n className=\"p-1 text-gray-400 hover:text-blue-500 transition-colors\"\n title=\"Retry\"\n >\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15\" />\n </svg>\n </button>\n )}\n <button\n onClick={() => handleRemoveFile(upload.id)}\n className=\"p-1 text-gray-400 hover:text-red-500 transition-colors\"\n title=\"Remove\"\n >\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n </div>\n </div>\n ))}\n </div>\n )}\n\n {/* Manual Upload Button */}\n {!autoUpload && hasPendingFiles && (\n <div className=\"mt-4\">\n <Button\n onClick={handleStartUpload}\n disabled={isUploading || disabled}\n variant=\"primary\"\n className=\"w-full\"\n >\n {isUploading ? (\n <>\n <Spinner size=\"sm\" color=\"white\" className=\"mr-2\" />\n Uploading...\n </>\n ) : (\n `Upload ${uploads.filter(u => u.status === 'pending').length} file(s)`\n )}\n </Button>\n </div>\n )}\n </div>\n )\n}\n","/**\n * Client Components\n * These components run on the client side\n */\n\nexport { Tabs } from './Tabs'\nexport type { TabsProps, Tab } from './Tabs'\n\nexport { Modal } from './Modal'\nexport type { ModalProps } from './Modal'\n\nexport { PaymentMethodManager } from './PaymentMethodManager'\nexport type { PaymentMethodManagerProps } from './PaymentMethodManager'\n\nexport { BillingContent } from './BillingContent'\nexport { AddPaymentMethodForm } from './AddPaymentMethodForm'\nexport type { AddPaymentMethodFormProps } from './AddPaymentMethodForm'\nexport { Button } from './LiteButton'\nexport type { ButtonProps } from './LiteButton'\n\n// Auth Components\nexport { LoginForm } from './LoginForm'\nexport type { LoginFormProps, LoginSuccessData } from './LoginForm'\n\nexport { RegisterForm } from './RegisterForm'\nexport type { RegisterFormProps, RegisterSuccessData } from './RegisterForm'\n\nexport { ForgotPasswordForm } from './ForgotPasswordForm'\nexport type { ForgotPasswordFormProps } from './ForgotPasswordForm'\n\nexport { ResetPasswordForm } from './ResetPasswordForm'\nexport type { ResetPasswordFormProps } from './ResetPasswordForm'\n\n// File Upload Component\nexport { FileUploader } from './FileUploader'\nexport type {\n FileUploaderProps,\n UploadProgress,\n UploadedFile,\n FileUploadState,\n} from './FileUploader'\n\nexport const OMNIKIT_CLIENT_VERSION = '0.9.11'\n"]}
@@ -0,0 +1,160 @@
1
+ /* src/components/client/BillingContent/styles.css */
2
+ @layer components {
3
+ .okt-billing,
4
+ .okt-billing * {
5
+ box-sizing: border-box !important;
6
+ }
7
+ .okt-billing .okt-card-border {
8
+ border-width: 1px !important;
9
+ border-style: solid !important;
10
+ border-color: #e5e7eb !important;
11
+ border-radius: 0.5rem !important;
12
+ }
13
+ .okt-billing .okt-card-border:hover {
14
+ background-color: #f9fafb !important;
15
+ }
16
+ @media (prefers-color-scheme: dark) {
17
+ .okt-billing .okt-card-border {
18
+ border-color: #404040 !important;
19
+ }
20
+ .okt-billing .okt-card-border:hover {
21
+ background-color: #262626 !important;
22
+ }
23
+ }
24
+ .dark .okt-billing .okt-card-border {
25
+ border-color: #404040 !important;
26
+ }
27
+ .dark .okt-billing .okt-card-border:hover {
28
+ background-color: #262626 !important;
29
+ }
30
+ .okt-billing .okt-plan-card {
31
+ border-width: 2px !important;
32
+ border-style: solid !important;
33
+ border-radius: 0.5rem !important;
34
+ }
35
+ .okt-billing .okt-plan-card-default {
36
+ border-color: #e5e7eb !important;
37
+ }
38
+ .okt-billing .okt-plan-card-selected {
39
+ border-color: #2563eb !important;
40
+ }
41
+ @media (prefers-color-scheme: dark) {
42
+ .okt-billing .okt-plan-card-default {
43
+ border-color: #404040 !important;
44
+ }
45
+ .okt-billing .okt-plan-card-selected {
46
+ border-color: #3b82f6 !important;
47
+ }
48
+ }
49
+ .dark .okt-billing .okt-plan-card-default {
50
+ border-color: #404040 !important;
51
+ }
52
+ .dark .okt-billing .okt-plan-card-selected {
53
+ border-color: #3b82f6 !important;
54
+ }
55
+ .okt-billing .okt-empty-border {
56
+ border-width: 1px !important;
57
+ border-style: dashed !important;
58
+ border-color: #d1d5db !important;
59
+ border-radius: 0.5rem !important;
60
+ }
61
+ @media (prefers-color-scheme: dark) {
62
+ .okt-billing .okt-empty-border {
63
+ border-color: #404040 !important;
64
+ }
65
+ }
66
+ .dark .okt-billing .okt-empty-border {
67
+ border-color: #404040 !important;
68
+ }
69
+ .okt-billing .okt-divider {
70
+ border-top-width: 1px !important;
71
+ border-top-style: solid !important;
72
+ border-top-color: #e5e7eb !important;
73
+ }
74
+ @media (prefers-color-scheme: dark) {
75
+ .okt-billing .okt-divider {
76
+ border-top-color: #374151 !important;
77
+ }
78
+ }
79
+ .dark .okt-billing .okt-divider {
80
+ border-top-color: #374151 !important;
81
+ }
82
+ .okt-billing .okt-alert-warning {
83
+ border-width: 1px !important;
84
+ border-style: solid !important;
85
+ border-color: #fde68a !important;
86
+ border-radius: 0.5rem !important;
87
+ }
88
+ .okt-billing .okt-alert-success {
89
+ border-width: 1px !important;
90
+ border-style: solid !important;
91
+ border-color: #bbf7d0 !important;
92
+ border-radius: 0.5rem !important;
93
+ }
94
+ .okt-billing .okt-alert-error {
95
+ border-width: 1px !important;
96
+ border-style: solid !important;
97
+ border-color: #fecaca !important;
98
+ border-radius: 0.5rem !important;
99
+ }
100
+ @media (prefers-color-scheme: dark) {
101
+ .okt-billing .okt-alert-warning {
102
+ border-color: #854d0e !important;
103
+ }
104
+ .okt-billing .okt-alert-success {
105
+ border-color: #166534 !important;
106
+ }
107
+ .okt-billing .okt-alert-error {
108
+ border-color: #991b1b !important;
109
+ }
110
+ }
111
+ .dark .okt-billing .okt-alert-warning {
112
+ border-color: #854d0e !important;
113
+ }
114
+ .dark .okt-billing .okt-alert-success {
115
+ border-color: #166534 !important;
116
+ }
117
+ .dark .okt-billing .okt-alert-error {
118
+ border-color: #991b1b !important;
119
+ }
120
+ .okt-billing .okt-selectable {
121
+ border-width: 2px !important;
122
+ border-style: solid !important;
123
+ border-radius: 0.5rem !important;
124
+ cursor: pointer !important;
125
+ transition: border-color 0.15s ease !important;
126
+ }
127
+ .okt-billing .okt-selectable-default {
128
+ border-color: #e5e7eb !important;
129
+ }
130
+ .okt-billing .okt-selectable-default:hover {
131
+ border-color: #d1d5db !important;
132
+ }
133
+ .okt-billing .okt-selectable-selected {
134
+ border-color: #3b82f6 !important;
135
+ background-color: #eff6ff !important;
136
+ }
137
+ @media (prefers-color-scheme: dark) {
138
+ .okt-billing .okt-selectable-default {
139
+ border-color: #404040 !important;
140
+ }
141
+ .okt-billing .okt-selectable-default:hover {
142
+ border-color: #525252 !important;
143
+ }
144
+ .okt-billing .okt-selectable-selected {
145
+ border-color: #3b82f6 !important;
146
+ background-color: rgba(59, 130, 246, 0.1) !important;
147
+ }
148
+ }
149
+ .dark .okt-billing .okt-selectable-default {
150
+ border-color: #404040 !important;
151
+ }
152
+ .dark .okt-billing .okt-selectable-default:hover {
153
+ border-color: #525252 !important;
154
+ }
155
+ .dark .okt-billing .okt-selectable-selected {
156
+ border-color: #3b82f6 !important;
157
+ background-color: rgba(59, 130, 246, 0.1) !important;
158
+ }
159
+ }
160
+ /*# sourceMappingURL=index.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/client/BillingContent/styles.css"],"sourcesContent":["/* OmniKit Billing - Scoped CSS */\n/* All styles are scoped to .okt-billing to prevent conflicts */\n\n@layer components {\n /* Reset borders within okt-billing to prevent conflicts */\n .okt-billing,\n .okt-billing * {\n box-sizing: border-box !important;\n }\n\n /* Scoped border styles for invoice/payment cards */\n .okt-billing .okt-card-border {\n border-width: 1px !important;\n border-style: solid !important;\n border-color: #e5e7eb !important;\n border-radius: 0.5rem !important;\n }\n\n .okt-billing .okt-card-border:hover {\n background-color: #f9fafb !important;\n }\n\n @media (prefers-color-scheme: dark) {\n .okt-billing .okt-card-border {\n border-color: #404040 !important;\n }\n .okt-billing .okt-card-border:hover {\n background-color: #262626 !important;\n }\n }\n\n .dark .okt-billing .okt-card-border {\n border-color: #404040 !important;\n }\n\n .dark .okt-billing .okt-card-border:hover {\n background-color: #262626 !important;\n }\n\n /* Plan card borders */\n .okt-billing .okt-plan-card {\n border-width: 2px !important;\n border-style: solid !important;\n border-radius: 0.5rem !important;\n }\n\n .okt-billing .okt-plan-card-default {\n border-color: #e5e7eb !important;\n }\n\n .okt-billing .okt-plan-card-selected {\n border-color: #2563eb !important;\n }\n\n @media (prefers-color-scheme: dark) {\n .okt-billing .okt-plan-card-default {\n border-color: #404040 !important;\n }\n .okt-billing .okt-plan-card-selected {\n border-color: #3b82f6 !important;\n }\n }\n\n .dark .okt-billing .okt-plan-card-default {\n border-color: #404040 !important;\n }\n\n .dark .okt-billing .okt-plan-card-selected {\n border-color: #3b82f6 !important;\n }\n\n /* Dashed border for empty states */\n .okt-billing .okt-empty-border {\n border-width: 1px !important;\n border-style: dashed !important;\n border-color: #d1d5db !important;\n border-radius: 0.5rem !important;\n }\n\n @media (prefers-color-scheme: dark) {\n .okt-billing .okt-empty-border {\n border-color: #404040 !important;\n }\n }\n\n .dark .okt-billing .okt-empty-border {\n border-color: #404040 !important;\n }\n\n /* Divider/separator borders */\n .okt-billing .okt-divider {\n border-top-width: 1px !important;\n border-top-style: solid !important;\n border-top-color: #e5e7eb !important;\n }\n\n @media (prefers-color-scheme: dark) {\n .okt-billing .okt-divider {\n border-top-color: #374151 !important;\n }\n }\n\n .dark .okt-billing .okt-divider {\n border-top-color: #374151 !important;\n }\n\n /* Alert/notification borders */\n .okt-billing .okt-alert-warning {\n border-width: 1px !important;\n border-style: solid !important;\n border-color: #fde68a !important;\n border-radius: 0.5rem !important;\n }\n\n .okt-billing .okt-alert-success {\n border-width: 1px !important;\n border-style: solid !important;\n border-color: #bbf7d0 !important;\n border-radius: 0.5rem !important;\n }\n\n .okt-billing .okt-alert-error {\n border-width: 1px !important;\n border-style: solid !important;\n border-color: #fecaca !important;\n border-radius: 0.5rem !important;\n }\n\n @media (prefers-color-scheme: dark) {\n .okt-billing .okt-alert-warning {\n border-color: #854d0e !important;\n }\n .okt-billing .okt-alert-success {\n border-color: #166534 !important;\n }\n .okt-billing .okt-alert-error {\n border-color: #991b1b !important;\n }\n }\n\n .dark .okt-billing .okt-alert-warning {\n border-color: #854d0e !important;\n }\n\n .dark .okt-billing .okt-alert-success {\n border-color: #166534 !important;\n }\n\n .dark .okt-billing .okt-alert-error {\n border-color: #991b1b !important;\n }\n\n /* Payment method selection borders */\n .okt-billing .okt-selectable {\n border-width: 2px !important;\n border-style: solid !important;\n border-radius: 0.5rem !important;\n cursor: pointer !important;\n transition: border-color 0.15s ease !important;\n }\n\n .okt-billing .okt-selectable-default {\n border-color: #e5e7eb !important;\n }\n\n .okt-billing .okt-selectable-default:hover {\n border-color: #d1d5db !important;\n }\n\n .okt-billing .okt-selectable-selected {\n border-color: #3b82f6 !important;\n background-color: #eff6ff !important;\n }\n\n @media (prefers-color-scheme: dark) {\n .okt-billing .okt-selectable-default {\n border-color: #404040 !important;\n }\n .okt-billing .okt-selectable-default:hover {\n border-color: #525252 !important;\n }\n .okt-billing .okt-selectable-selected {\n border-color: #3b82f6 !important;\n background-color: rgba(59, 130, 246, 0.1) !important;\n }\n }\n\n .dark .okt-billing .okt-selectable-default {\n border-color: #404040 !important;\n }\n\n .dark .okt-billing .okt-selectable-default:hover {\n border-color: #525252 !important;\n }\n\n .dark .okt-billing .okt-selectable-selected {\n border-color: #3b82f6 !important;\n background-color: rgba(59, 130, 246, 0.1) !important;\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,3 +1,3 @@
1
- export { B as Billing, C as Column, c as ColumnDefinition, D as DataList, b as DataListProps } from '../../index-B8HugsDW.js';
2
- export { a as BillingData, B as BillingProps, C as Customer, E as Entitlement, I as Invoice, c as PaymentMethod, b as Price, P as Product, d as ProductFeature, S as Subscription } from '../../types-B-w87oEm.js';
1
+ export { B as Billing, C as Column, c as ColumnDefinition, D as DataList, b as DataListProps } from '../../index-DKuejSvz.js';
2
+ export { a as BillingData, B as BillingProps, C as Customer, E as Entitlement, I as Invoice, c as PaymentMethod, b as Price, P as Product, d as ProductFeature, S as Subscription } from '../../types-CnhWTSXv.js';
3
3
  import 'react/jsx-runtime';
@@ -1,4 +1,4 @@
1
- export { Billing, DataList } from '../../chunk-FKCAHS23.js';
2
- import '../../chunk-WWEZXJIJ.js';
1
+ export { Billing, DataList } from '../../chunk-NHN5YSUE.js';
2
+ import '../../chunk-MTFFRTQW.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,4 @@
1
+ export { Billing, DataList } from '../../chunk-FA7CH4TP.mjs';
2
+ import '../../chunk-2MKNXIZG.mjs';
3
+ //# sourceMappingURL=index.mjs.map
4
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
@@ -1,5 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { B as BillingProps } from './types-B-w87oEm.js';
2
+ import { B as BillingProps } from './types-CnhWTSXv.js';
3
3
 
4
4
  /**
5
5
  * OmniKit API shared types
package/dist/index.css ADDED
@@ -0,0 +1,160 @@
1
+ /* src/components/client/BillingContent/styles.css */
2
+ @layer components {
3
+ .okt-billing,
4
+ .okt-billing * {
5
+ box-sizing: border-box !important;
6
+ }
7
+ .okt-billing .okt-card-border {
8
+ border-width: 1px !important;
9
+ border-style: solid !important;
10
+ border-color: #e5e7eb !important;
11
+ border-radius: 0.5rem !important;
12
+ }
13
+ .okt-billing .okt-card-border:hover {
14
+ background-color: #f9fafb !important;
15
+ }
16
+ @media (prefers-color-scheme: dark) {
17
+ .okt-billing .okt-card-border {
18
+ border-color: #404040 !important;
19
+ }
20
+ .okt-billing .okt-card-border:hover {
21
+ background-color: #262626 !important;
22
+ }
23
+ }
24
+ .dark .okt-billing .okt-card-border {
25
+ border-color: #404040 !important;
26
+ }
27
+ .dark .okt-billing .okt-card-border:hover {
28
+ background-color: #262626 !important;
29
+ }
30
+ .okt-billing .okt-plan-card {
31
+ border-width: 2px !important;
32
+ border-style: solid !important;
33
+ border-radius: 0.5rem !important;
34
+ }
35
+ .okt-billing .okt-plan-card-default {
36
+ border-color: #e5e7eb !important;
37
+ }
38
+ .okt-billing .okt-plan-card-selected {
39
+ border-color: #2563eb !important;
40
+ }
41
+ @media (prefers-color-scheme: dark) {
42
+ .okt-billing .okt-plan-card-default {
43
+ border-color: #404040 !important;
44
+ }
45
+ .okt-billing .okt-plan-card-selected {
46
+ border-color: #3b82f6 !important;
47
+ }
48
+ }
49
+ .dark .okt-billing .okt-plan-card-default {
50
+ border-color: #404040 !important;
51
+ }
52
+ .dark .okt-billing .okt-plan-card-selected {
53
+ border-color: #3b82f6 !important;
54
+ }
55
+ .okt-billing .okt-empty-border {
56
+ border-width: 1px !important;
57
+ border-style: dashed !important;
58
+ border-color: #d1d5db !important;
59
+ border-radius: 0.5rem !important;
60
+ }
61
+ @media (prefers-color-scheme: dark) {
62
+ .okt-billing .okt-empty-border {
63
+ border-color: #404040 !important;
64
+ }
65
+ }
66
+ .dark .okt-billing .okt-empty-border {
67
+ border-color: #404040 !important;
68
+ }
69
+ .okt-billing .okt-divider {
70
+ border-top-width: 1px !important;
71
+ border-top-style: solid !important;
72
+ border-top-color: #e5e7eb !important;
73
+ }
74
+ @media (prefers-color-scheme: dark) {
75
+ .okt-billing .okt-divider {
76
+ border-top-color: #374151 !important;
77
+ }
78
+ }
79
+ .dark .okt-billing .okt-divider {
80
+ border-top-color: #374151 !important;
81
+ }
82
+ .okt-billing .okt-alert-warning {
83
+ border-width: 1px !important;
84
+ border-style: solid !important;
85
+ border-color: #fde68a !important;
86
+ border-radius: 0.5rem !important;
87
+ }
88
+ .okt-billing .okt-alert-success {
89
+ border-width: 1px !important;
90
+ border-style: solid !important;
91
+ border-color: #bbf7d0 !important;
92
+ border-radius: 0.5rem !important;
93
+ }
94
+ .okt-billing .okt-alert-error {
95
+ border-width: 1px !important;
96
+ border-style: solid !important;
97
+ border-color: #fecaca !important;
98
+ border-radius: 0.5rem !important;
99
+ }
100
+ @media (prefers-color-scheme: dark) {
101
+ .okt-billing .okt-alert-warning {
102
+ border-color: #854d0e !important;
103
+ }
104
+ .okt-billing .okt-alert-success {
105
+ border-color: #166534 !important;
106
+ }
107
+ .okt-billing .okt-alert-error {
108
+ border-color: #991b1b !important;
109
+ }
110
+ }
111
+ .dark .okt-billing .okt-alert-warning {
112
+ border-color: #854d0e !important;
113
+ }
114
+ .dark .okt-billing .okt-alert-success {
115
+ border-color: #166534 !important;
116
+ }
117
+ .dark .okt-billing .okt-alert-error {
118
+ border-color: #991b1b !important;
119
+ }
120
+ .okt-billing .okt-selectable {
121
+ border-width: 2px !important;
122
+ border-style: solid !important;
123
+ border-radius: 0.5rem !important;
124
+ cursor: pointer !important;
125
+ transition: border-color 0.15s ease !important;
126
+ }
127
+ .okt-billing .okt-selectable-default {
128
+ border-color: #e5e7eb !important;
129
+ }
130
+ .okt-billing .okt-selectable-default:hover {
131
+ border-color: #d1d5db !important;
132
+ }
133
+ .okt-billing .okt-selectable-selected {
134
+ border-color: #3b82f6 !important;
135
+ background-color: #eff6ff !important;
136
+ }
137
+ @media (prefers-color-scheme: dark) {
138
+ .okt-billing .okt-selectable-default {
139
+ border-color: #404040 !important;
140
+ }
141
+ .okt-billing .okt-selectable-default:hover {
142
+ border-color: #525252 !important;
143
+ }
144
+ .okt-billing .okt-selectable-selected {
145
+ border-color: #3b82f6 !important;
146
+ background-color: rgba(59, 130, 246, 0.1) !important;
147
+ }
148
+ }
149
+ .dark .okt-billing .okt-selectable-default {
150
+ border-color: #404040 !important;
151
+ }
152
+ .dark .okt-billing .okt-selectable-default:hover {
153
+ border-color: #525252 !important;
154
+ }
155
+ .dark .okt-billing .okt-selectable-selected {
156
+ border-color: #3b82f6 !important;
157
+ background-color: rgba(59, 130, 246, 0.1) !important;
158
+ }
159
+ }
160
+ /*# sourceMappingURL=index.css.map */