feat: Complete platform enhancement with multi-tenant architecture
Major additions: - Territory manager system with application workflow - Custom pricing and page builder with Craft.js - Enhanced Stripe Connect onboarding - CodeReadr QR scanning integration - Kiosk mode for venue sales - Super admin dashboard and analytics - MCP integration for AI-powered operations Infrastructure improvements: - Centralized API client and routing system - Enhanced authentication with organization context - Comprehensive theme management system - Advanced event management with custom tabs - Performance monitoring and accessibility features Database schema updates: - Territory management tables - Custom pages and pricing structures - Kiosk PIN system - Enhanced organization profiles - CodeReadr integration tables 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -53,7 +53,7 @@ export default function PresaleTab({ eventId }: PresaleTabProps) {
|
||||
if (error) throw error;
|
||||
setPresaleCodes(data || []);
|
||||
} catch (error) {
|
||||
console.error('Error loading presale codes:', error);
|
||||
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
@@ -123,7 +123,7 @@ export default function PresaleTab({ eventId }: PresaleTabProps) {
|
||||
setShowModal(false);
|
||||
loadPresaleCodes();
|
||||
} catch (error) {
|
||||
console.error('Error saving presale code:', error);
|
||||
|
||||
} finally {
|
||||
setSaving(false);
|
||||
}
|
||||
@@ -140,7 +140,7 @@ export default function PresaleTab({ eventId }: PresaleTabProps) {
|
||||
if (error) throw error;
|
||||
loadPresaleCodes();
|
||||
} catch (error) {
|
||||
console.error('Error deleting presale code:', error);
|
||||
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -155,7 +155,7 @@ export default function PresaleTab({ eventId }: PresaleTabProps) {
|
||||
if (error) throw error;
|
||||
loadPresaleCodes();
|
||||
} catch (error) {
|
||||
console.error('Error toggling presale code:', error);
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
@@ -181,7 +181,11 @@ export default function PresaleTab({ eventId }: PresaleTabProps) {
|
||||
<h2 className="text-2xl font-light text-white">Presale Codes</h2>
|
||||
<button
|
||||
onClick={handleCreateCode}
|
||||
className="flex items-center gap-2 px-4 py-2 bg-gradient-to-r from-blue-600 to-purple-600 hover:from-blue-700 hover:to-purple-700 text-white rounded-lg font-medium transition-all duration-200"
|
||||
className="flex items-center gap-2 px-4 py-2 rounded-lg font-medium transition-all duration-200"
|
||||
style={{
|
||||
background: 'var(--glass-text-accent)',
|
||||
color: 'white'
|
||||
}}
|
||||
>
|
||||
<svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 6v6m0 0v6m0-6h6m-6 0H6" />
|
||||
@@ -198,7 +202,11 @@ export default function PresaleTab({ eventId }: PresaleTabProps) {
|
||||
<p className="text-white/60 mb-4">No presale codes created yet</p>
|
||||
<button
|
||||
onClick={handleCreateCode}
|
||||
className="px-6 py-3 bg-gradient-to-r from-blue-600 to-purple-600 hover:from-blue-700 hover:to-purple-700 text-white rounded-lg font-medium transition-all duration-200"
|
||||
className="px-6 py-3 rounded-lg font-medium transition-all duration-200"
|
||||
style={{
|
||||
background: 'var(--glass-text-accent)',
|
||||
color: 'white'
|
||||
}}
|
||||
>
|
||||
Create Your First Presale Code
|
||||
</button>
|
||||
@@ -402,7 +410,11 @@ export default function PresaleTab({ eventId }: PresaleTabProps) {
|
||||
<button
|
||||
onClick={handleSaveCode}
|
||||
disabled={saving}
|
||||
className="px-6 py-3 bg-gradient-to-r from-blue-600 to-purple-600 hover:from-blue-700 hover:to-purple-700 text-white rounded-lg font-medium transition-all duration-200 disabled:opacity-50"
|
||||
className="px-6 py-3 rounded-lg font-medium transition-all duration-200 disabled:opacity-50"
|
||||
style={{
|
||||
background: 'var(--glass-text-accent)',
|
||||
color: 'white'
|
||||
}}
|
||||
>
|
||||
{saving ? 'Saving...' : editingCode ? 'Update' : 'Create'}
|
||||
</button>
|
||||
|
||||
Reference in New Issue
Block a user