@uptrademedia/site-kit 1.0.0
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.
- package/README.md +305 -0
- package/dist/analytics/index.js +88 -0
- package/dist/analytics/index.js.map +1 -0
- package/dist/analytics/index.mjs +70 -0
- package/dist/analytics/index.mjs.map +1 -0
- package/dist/api-N35S3EES.js +57 -0
- package/dist/api-N35S3EES.js.map +1 -0
- package/dist/api-SYBTK7Z7.mjs +4 -0
- package/dist/api-SYBTK7Z7.mjs.map +1 -0
- package/dist/blog/index.js +200 -0
- package/dist/blog/index.js.map +1 -0
- package/dist/blog/index.mjs +194 -0
- package/dist/blog/index.mjs.map +1 -0
- package/dist/chunk-3MUOUXHV.js +3721 -0
- package/dist/chunk-3MUOUXHV.js.map +1 -0
- package/dist/chunk-4HVYXYQL 2.mjs +255 -0
- package/dist/chunk-4HVYXYQL.mjs +255 -0
- package/dist/chunk-4HVYXYQL.mjs.map +1 -0
- package/dist/chunk-7H6I3ECV.mjs +120 -0
- package/dist/chunk-7H6I3ECV.mjs.map +1 -0
- package/dist/chunk-COI6GOX2.mjs +3679 -0
- package/dist/chunk-COI6GOX2.mjs.map +1 -0
- package/dist/chunk-EQCVQC35.js +35 -0
- package/dist/chunk-EQCVQC35.js 2.map +1 -0
- package/dist/chunk-EQCVQC35.js.map +1 -0
- package/dist/chunk-FEBYQGY4 2.mjs +251 -0
- package/dist/chunk-FEBYQGY4.mjs +251 -0
- package/dist/chunk-FEBYQGY4.mjs.map +1 -0
- package/dist/chunk-FKVJOT2F.mjs +796 -0
- package/dist/chunk-FKVJOT2F.mjs.map +1 -0
- package/dist/chunk-GQ6ZOU2N.mjs +134 -0
- package/dist/chunk-GQ6ZOU2N.mjs.map +1 -0
- package/dist/chunk-HCFPU7TU.js +137 -0
- package/dist/chunk-HCFPU7TU.js.map +1 -0
- package/dist/chunk-NYKRE2FL 2.mjs +31 -0
- package/dist/chunk-NYKRE2FL.mjs +31 -0
- package/dist/chunk-NYKRE2FL.mjs 2.map +1 -0
- package/dist/chunk-NYKRE2FL.mjs.map +1 -0
- package/dist/chunk-QP5NCO2E.js +133 -0
- package/dist/chunk-QP5NCO2E.js.map +1 -0
- package/dist/chunk-RV7H3I6J.js +255 -0
- package/dist/chunk-RV7H3I6J.js 2.map +1 -0
- package/dist/chunk-RV7H3I6J.js.map +1 -0
- package/dist/chunk-SBVEYCSV.js +140 -0
- package/dist/chunk-SBVEYCSV.js.map +1 -0
- package/dist/chunk-TUKGA3UK.js +257 -0
- package/dist/chunk-TUKGA3UK.js 2.map +1 -0
- package/dist/chunk-TUKGA3UK.js.map +1 -0
- package/dist/chunk-V3F5J6CV.js +801 -0
- package/dist/chunk-V3F5J6CV.js.map +1 -0
- package/dist/chunk-WPSRS352.mjs +135 -0
- package/dist/chunk-WPSRS352.mjs.map +1 -0
- package/dist/commerce/index.js +157 -0
- package/dist/commerce/index.js.map +1 -0
- package/dist/commerce/index.mjs +4 -0
- package/dist/commerce/index.mjs.map +1 -0
- package/dist/commerce/server.js +186 -0
- package/dist/commerce/server.js.map +1 -0
- package/dist/commerce/server.mjs +176 -0
- package/dist/commerce/server.mjs.map +1 -0
- package/dist/engage/index.js +50 -0
- package/dist/engage/index.js.map +1 -0
- package/dist/engage/index.mjs +44 -0
- package/dist/engage/index.mjs.map +1 -0
- package/dist/forms/index.js +1053 -0
- package/dist/forms/index.js.map +1 -0
- package/dist/forms/index.mjs +1035 -0
- package/dist/forms/index.mjs.map +1 -0
- package/dist/generators-7Y5ABRYV 2.mjs +161 -0
- package/dist/generators-7Y5ABRYV.mjs +161 -0
- package/dist/generators-7Y5ABRYV.mjs 2.map +1 -0
- package/dist/generators-7Y5ABRYV.mjs.map +1 -0
- package/dist/generators-GWIYCA5M.js +171 -0
- package/dist/generators-GWIYCA5M.js 2.map +1 -0
- package/dist/generators-GWIYCA5M.js.map +1 -0
- package/dist/index 2.mjs +74 -0
- package/dist/index.js +326 -0
- package/dist/index.js 2.map +1 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +222 -0
- package/dist/index.mjs.map +1 -0
- package/dist/migrator-V6KS75EA 2.mjs +265 -0
- package/dist/migrator-V6KS75EA.mjs +265 -0
- package/dist/migrator-V6KS75EA.mjs 2.map +1 -0
- package/dist/migrator-V6KS75EA.mjs.map +1 -0
- package/dist/migrator-XKM7YQCY.js +272 -0
- package/dist/migrator-XKM7YQCY.js 2.map +1 -0
- package/dist/migrator-XKM7YQCY.js.map +1 -0
- package/dist/scanner-MF7P3CDE 2.mjs +14386 -0
- package/dist/scanner-MF7P3CDE.mjs +14386 -0
- package/dist/scanner-MF7P3CDE.mjs 2.map +1 -0
- package/dist/scanner-MF7P3CDE.mjs.map +1 -0
- package/dist/scanner-NT6YG4TD 2.js +14397 -0
- package/dist/scanner-NT6YG4TD.js +14397 -0
- package/dist/scanner-NT6YG4TD.js 2.map +1 -0
- package/dist/scanner-NT6YG4TD.js.map +1 -0
- package/dist/seo/index.js +447 -0
- package/dist/seo/index.js.map +1 -0
- package/dist/seo/index.mjs +411 -0
- package/dist/seo/index.mjs.map +1 -0
- package/dist/seo/server.js +66 -0
- package/dist/seo/server.js.map +1 -0
- package/dist/seo/server.mjs +5 -0
- package/dist/seo/server.mjs.map +1 -0
- package/dist/setup/index.js +1050 -0
- package/dist/setup/index.js.map +1 -0
- package/dist/setup/index.mjs +1046 -0
- package/dist/setup/index.mjs.map +1 -0
- package/dist/sitemap/index.js +212 -0
- package/dist/sitemap/index.js.map +1 -0
- package/dist/sitemap/index.mjs +206 -0
- package/dist/sitemap/index.mjs.map +1 -0
- package/dist/web-vitals-BH55V7EJ.js +252 -0
- package/dist/web-vitals-BH55V7EJ.js 2.map +1 -0
- package/dist/web-vitals-BH55V7EJ.js.map +1 -0
- package/dist/web-vitals-RJYPWAR3 2.mjs +241 -0
- package/dist/web-vitals-RJYPWAR3.mjs +241 -0
- package/dist/web-vitals-RJYPWAR3.mjs 2.map +1 -0
- package/dist/web-vitals-RJYPWAR3.mjs.map +1 -0
- package/package.json +118 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commerce/utils.ts","../src/commerce/api.ts","../src/commerce/OfferingCard.tsx","../src/commerce/OfferingList.tsx","../src/commerce/EventTile.tsx","../src/commerce/UpcomingEvents.tsx","../src/commerce/ProductEmbed.tsx","../src/commerce/ProductDetail.tsx","../src/commerce/ProductGrid.tsx","../src/commerce/ProductPage.tsx","../src/commerce/EventEmbed.tsx","../src/commerce/CheckoutForm.tsx","../src/commerce/RegistrationForm.tsx","../src/commerce/CalendarView.tsx","../src/commerce/EventModal.tsx","../src/commerce/useEventModal.ts","../src/commerce/EventCalendar.tsx","../src/commerce/EventsWidget.tsx"],"names":["jsxs","jsx","useState","useEffect","React","useMemo","Fragment","useCallback"],"mappings":"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","file":"chunk-COI6GOX2.mjs","sourcesContent":["/**\n * @uptrade/site-kit/commerce - Utility functions\n */\n\nexport function formatPrice(amount: number, currency: string = 'USD'): string {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency,\n }).format(amount)\n}\n\nexport function formatDate(dateString: string): string {\n const date = new Date(dateString)\n return new Intl.DateTimeFormat('en-US', {\n weekday: 'short',\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n }).format(date)\n}\n\nexport function formatDateTime(dateString: string): string {\n const date = new Date(dateString)\n return new Intl.DateTimeFormat('en-US', {\n weekday: 'short',\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n }).format(date)\n}\n\nexport function formatTime(dateString: string): string {\n const date = new Date(dateString)\n return new Intl.DateTimeFormat('en-US', {\n hour: 'numeric',\n minute: '2-digit',\n }).format(date)\n}\n\nexport function formatDateRange(startDate: string, endDate?: string): string {\n const start = new Date(startDate)\n const end = endDate ? new Date(endDate) : null\n \n const startFormatted = formatDateTime(startDate)\n \n if (!end) return startFormatted\n \n // Same day\n if (start.toDateString() === end.toDateString()) {\n return `${startFormatted} - ${formatTime(endDate!)}`\n }\n \n return `${startFormatted} - ${formatDateTime(endDate!)}`\n}\n\nexport function getRelativeTimeUntil(dateString: string): string {\n const date = new Date(dateString)\n const now = new Date()\n const diffMs = date.getTime() - now.getTime()\n const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24))\n \n if (diffDays < 0) return 'Past'\n if (diffDays === 0) return 'Today'\n if (diffDays === 1) return 'Tomorrow'\n if (diffDays < 7) return `In ${diffDays} days`\n if (diffDays < 30) {\n const weeks = Math.floor(diffDays / 7)\n return `In ${weeks} week${weeks > 1 ? 's' : ''}`\n }\n if (diffDays < 365) {\n const months = Math.floor(diffDays / 30)\n return `In ${months} month${months > 1 ? 's' : ''}`\n }\n return formatDate(dateString)\n}\n\nexport function getSpotsRemaining(\n capacity: number | null | undefined,\n registrations: number = 0\n): number | null {\n if (capacity == null) return null\n return Math.max(0, capacity - registrations)\n}\n\nexport function isEventSoldOut(\n capacity: number | null | undefined,\n registrations: number = 0\n): boolean {\n const remaining = getSpotsRemaining(capacity, registrations)\n return remaining !== null && remaining <= 0\n}\n\nexport function getOfferingUrl(\n slug: string, \n type: string,\n basePaths?: {\n product?: string\n service?: string\n event?: string\n class?: string\n }\n): string {\n const defaults = {\n product: '/shop',\n service: '/services',\n event: '/events',\n class: '/classes',\n }\n const paths = { ...defaults, ...basePaths }\n const base = paths[type as keyof typeof paths] || '/offerings'\n return `${base}/${slug}`\n}\n","/**\n * @uptrade/site-kit/commerce - Commerce API\n * \n * API functions for fetching offerings, submitting orders, and registrations.\n * All data goes through Portal API with API key auth - never Supabase directly.\n */\n\nimport type { \n CommerceOffering, \n FetchOfferingsOptions,\n FetchEventsOptions,\n CheckoutCustomer,\n CheckoutResult,\n} from './types'\n\n// ============================================\n// API Config Helpers\n// ============================================\n\nfunction getApiConfig() {\n const apiUrl = typeof window !== 'undefined' \n ? (window as any).__SITE_KIT_API_URL__ || 'https://api.uptrademedia.com'\n : 'https://api.uptrademedia.com'\n const apiKey = typeof window !== 'undefined' \n ? (window as any).__SITE_KIT_API_KEY__ || ''\n : ''\n return { apiUrl, apiKey }\n}\n\nfunction getApiUrl(): string {\n return getApiConfig().apiUrl\n}\n\nfunction getApiKey(): string {\n return getApiConfig().apiKey\n}\n\nasync function apiPost<T>(endpoint: string, body: Record<string, any> = {}): Promise<T | null> {\n const { apiUrl, apiKey } = getApiConfig()\n \n if (!apiKey) {\n console.error('[Commerce] No API key configured')\n return null\n }\n \n try {\n const response = await fetch(`${apiUrl}${endpoint}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': apiKey,\n },\n body: JSON.stringify(body),\n })\n \n if (!response.ok) {\n console.error(`[Commerce] API error: ${response.statusText}`)\n return null\n }\n \n return await response.json()\n } catch (error) {\n console.error('[Commerce] Network error:', error)\n return null\n }\n}\n\n// ============================================\n// Fetch Offerings\n// ============================================\n\nexport async function fetchOfferings(\n options: FetchOfferingsOptions = {}\n): Promise<CommerceOffering[]> {\n const result = await apiPost<{ offerings: CommerceOffering[]; total: number }>(\n '/api/public/commerce/offerings',\n {\n type: options.type,\n category: options.category,\n status: options.status || 'active',\n limit: options.limit,\n offset: options.offset,\n orderBy: options.orderBy || 'sort_order',\n order: options.order || 'asc',\n }\n )\n \n return result?.offerings || []\n}\n\nexport async function fetchOffering(slug: string): Promise<CommerceOffering | null> {\n const result = await apiPost<{ offering: CommerceOffering }>(\n '/api/public/commerce/offering',\n { slug }\n )\n \n return result?.offering || null\n}\n\nexport async function fetchLatestOffering(\n type?: string,\n category?: string\n): Promise<CommerceOffering | null> {\n const result = await apiPost<{ offerings: CommerceOffering[] }>(\n '/api/public/commerce/offerings',\n {\n type,\n category,\n status: 'active',\n limit: 1,\n orderBy: 'created_at',\n order: 'desc',\n }\n )\n \n return result?.offerings?.[0] || null\n}\n\n// ============================================\n// Fetch Events (with schedules)\n// ============================================\n\nexport async function fetchUpcomingEvents(\n options: FetchEventsOptions = {}\n): Promise<CommerceOffering[]> {\n const result = await apiPost<{ events: CommerceOffering[]; total: number }>(\n '/api/public/commerce/events',\n {\n type: options.type || 'event',\n category: options.category,\n limit: options.limit,\n includePast: options.past,\n }\n )\n \n return result?.events || []\n}\n\nexport async function fetchNextEvent(category?: string): Promise<CommerceOffering | null> {\n const events = await fetchUpcomingEvents({ limit: 1, category })\n return events[0] || null\n}\n\n// ============================================\n// Products\n// ============================================\n\nexport async function fetchProducts(\n options: Omit<FetchOfferingsOptions, 'type'> = {}\n): Promise<CommerceOffering[]> {\n return fetchOfferings({ ...options, type: 'product' })\n}\n\nexport async function fetchServices(\n options: Omit<FetchOfferingsOptions, 'type'> = {}\n): Promise<CommerceOffering[]> {\n return fetchOfferings({ ...options, type: 'service' })\n}\n\n/**\n * Fetch products via public API\n */\nexport async function fetchProductsPublic(\n options: {\n category?: string\n limit?: number\n offset?: number\n orderBy?: 'name' | 'price' | 'created_at' | 'sort_order'\n order?: 'asc' | 'desc'\n search?: string\n } = {}\n): Promise<{ products: CommerceOffering[]; total: number }> {\n const result = await apiPost<{ products: CommerceOffering[]; total: number }>(\n '/api/public/commerce/products',\n options\n )\n \n return {\n products: result?.products || [],\n total: result?.total || 0,\n }\n}\n\n/**\n * Fetch single product by slug\n */\nexport async function fetchProductBySlug(slug: string): Promise<CommerceOffering | null> {\n const result = await apiPost<{ product: CommerceOffering }>(\n '/api/public/commerce/product',\n { slug }\n )\n \n return result?.product || null\n}\n\n/**\n * Fetch product categories\n */\nexport async function fetchCategories(): Promise<{ id: string; name: string; slug: string }[]> {\n const result = await apiPost<{ categories: { id: string; name: string; slug: string }[] }>(\n '/api/public/commerce/categories',\n {}\n )\n \n return result?.categories || []\n}\n\n// ============================================\n// Checkout & Registration\n// ============================================\n\nexport async function registerForEvent(\n eventId: string,\n scheduleId: string,\n customer: CheckoutCustomer\n): Promise<CheckoutResult> {\n const { apiUrl, apiKey } = getApiConfig()\n \n // Get analytics session ID for conversion tracking\n const analyticsSessionId = typeof sessionStorage !== 'undefined' \n ? sessionStorage.getItem('_uptrade_sid') \n : null\n \n try {\n const response = await fetch(`${apiUrl}/api/public/commerce/register`, {\n method: 'POST',\n headers: { \n 'Content-Type': 'application/json',\n 'x-api-key': apiKey,\n },\n body: JSON.stringify({\n offeringId: eventId,\n scheduleId,\n customer,\n analyticsSessionId, // Pass for conversion tracking\n }),\n })\n \n if (!response.ok) {\n const error = await response.json()\n return { success: false, error: error.message || 'Registration failed' }\n }\n \n const result = await response.json()\n \n // Note: Conversion is auto-logged via database trigger when commerce_sales is created\n \n return { \n success: true, \n sale_id: result.sale_id,\n confirmation_number: result.confirmation_number,\n }\n } catch (error) {\n return { success: false, error: 'Network error. Please try again.' }\n }\n}\n\nexport interface CreateCheckoutOptions {\n offeringId: string\n variantId?: string\n scheduleId?: string\n quantity?: number\n customer?: CheckoutCustomer\n successUrl?: string\n cancelUrl?: string\n}\n\n/**\n * Create a checkout session for a product or service\n * Supports both Stripe and Square based on project configuration\n */\nexport async function createCheckoutSession(\n optionsOrOfferingId: CreateCheckoutOptions | string,\n legacyOptions?: {\n variantId?: string\n scheduleId?: string\n quantity?: number\n customer?: CheckoutCustomer\n successUrl?: string\n cancelUrl?: string\n }\n): Promise<CheckoutResult> {\n const { apiUrl, apiKey } = getApiConfig()\n\n // Support both calling conventions\n const options: CreateCheckoutOptions = typeof optionsOrOfferingId === 'string'\n ? { offeringId: optionsOrOfferingId, ...legacyOptions }\n : optionsOrOfferingId\n \n // Get analytics session ID for conversion tracking\n const analyticsSessionId = typeof sessionStorage !== 'undefined' \n ? sessionStorage.getItem('_uptrade_sid') \n : null\n \n try {\n const response = await fetch(`${apiUrl}/api/public/commerce/checkout`, {\n method: 'POST',\n headers: { \n 'Content-Type': 'application/json',\n 'x-api-key': apiKey,\n },\n body: JSON.stringify({\n ...options,\n analyticsSessionId, // Pass for conversion tracking\n successUrl: options.successUrl || (typeof window !== 'undefined' ? window.location.href : ''),\n cancelUrl: options.cancelUrl || (typeof window !== 'undefined' ? window.location.href : ''),\n }),\n })\n \n if (!response.ok) {\n const error = await response.json()\n return { success: false, error: error.message || 'Checkout failed' }\n }\n \n const result = await response.json()\n \n // Note: Conversion is auto-logged via database trigger when commerce_sales is created\n \n return { \n success: true, \n payment_url: result.checkout_url,\n checkout_url: result.checkout_url,\n sale_id: result.sale_id,\n confirmation_number: result.confirmation_number,\n }\n } catch (error) {\n return { success: false, error: 'Network error. Please try again.' }\n }\n}\n","/**\n * @uptrade/site-kit/commerce - OfferingCard\n * \n * Displays a single product, service, event, or class with image, title, price, and CTA.\n */\n\n'use client'\n\nimport React from 'react'\nimport type { OfferingCardProps } from './types'\nimport { formatPrice, formatDate } from './utils'\n\nexport function OfferingCard({\n offering,\n variant = 'card',\n showImage = true,\n showPrice = true,\n showDescription = true,\n showCta = true,\n ctaText,\n onCtaClick,\n className = '',\n imageClassName = '',\n titleClassName = '',\n priceClassName = '',\n descriptionClassName = '',\n ctaClassName = '',\n}: OfferingCardProps) {\n const isEvent = offering.type === 'event' || offering.type === 'class'\n const nextSchedule = offering.schedules?.[0] || (offering as any).next_schedule\n \n // Default CTA text based on type\n const defaultCtaText = {\n product: 'Buy Now',\n service: 'Book Now',\n class: 'Register',\n event: 'Get Tickets',\n subscription: 'Subscribe',\n }[offering.type] || 'View Details'\n \n const handleClick = () => {\n if (onCtaClick) {\n onCtaClick(offering)\n } else if (typeof window !== 'undefined') {\n // Default: navigate to offering page\n const basePath = offering.type === 'event' ? '/events' : \n offering.type === 'product' ? '/shop' : \n '/services'\n window.location.href = `${basePath}/${offering.slug}`\n }\n }\n \n if (variant === 'minimal') {\n return (\n <div className={`site-kit-offering-minimal ${className}`}>\n <h3 className={`site-kit-offering-title ${titleClassName}`}>\n {offering.name}\n </h3>\n {showPrice && offering.price_is_public && offering.price != null && (\n <span className={`site-kit-offering-price ${priceClassName}`}>\n {formatPrice(offering.price, offering.currency)}\n </span>\n )}\n {showCta && (\n <button\n onClick={handleClick}\n className={`site-kit-offering-cta ${ctaClassName}`}\n >\n {ctaText || defaultCtaText}\n </button>\n )}\n </div>\n )\n }\n \n if (variant === 'horizontal') {\n return (\n <div className={`site-kit-offering-horizontal ${className}`} style={{\n display: 'flex',\n gap: '1rem',\n alignItems: 'flex-start',\n }}>\n {showImage && offering.featured_image_url && (\n <img\n src={offering.featured_image_url}\n alt={offering.name}\n className={`site-kit-offering-image ${imageClassName}`}\n style={{\n width: '120px',\n height: '120px',\n objectFit: 'cover',\n borderRadius: '8px',\n }}\n />\n )}\n <div style={{ flex: 1 }}>\n <h3 className={`site-kit-offering-title ${titleClassName}`} style={{\n margin: 0,\n fontSize: '1.125rem',\n fontWeight: 600,\n }}>\n {offering.name}\n </h3>\n \n {isEvent && nextSchedule && (\n <div className=\"site-kit-offering-date\" style={{ \n color: '#666',\n fontSize: '0.875rem',\n marginTop: '0.25rem',\n }}>\n {formatDate(nextSchedule.starts_at)}\n {offering.location && ` • ${offering.location}`}\n </div>\n )}\n \n {showDescription && offering.short_description && (\n <p className={`site-kit-offering-description ${descriptionClassName}`} style={{\n color: '#666',\n margin: '0.5rem 0',\n fontSize: '0.875rem',\n }}>\n {offering.short_description}\n </p>\n )}\n \n <div style={{ display: 'flex', alignItems: 'center', gap: '1rem', marginTop: '0.5rem' }}>\n {showPrice && offering.price_is_public && offering.price != null && (\n <span className={`site-kit-offering-price ${priceClassName}`} style={{\n fontWeight: 600,\n color: '#333',\n }}>\n {formatPrice(offering.price, offering.currency)}\n {offering.compare_at_price && (\n <span style={{ \n textDecoration: 'line-through', \n color: '#999',\n marginLeft: '0.5rem',\n fontWeight: 400,\n }}>\n {formatPrice(offering.compare_at_price, offering.currency)}\n </span>\n )}\n </span>\n )}\n \n {showCta && (\n <button\n onClick={handleClick}\n className={`site-kit-offering-cta ${ctaClassName}`}\n style={{\n padding: '0.5rem 1rem',\n borderRadius: '6px',\n border: 'none',\n background: '#2563eb',\n color: 'white',\n cursor: 'pointer',\n fontWeight: 500,\n }}\n >\n {ctaText || defaultCtaText}\n </button>\n )}\n </div>\n </div>\n </div>\n )\n }\n \n // Default: card variant\n return (\n <div className={`site-kit-offering-card ${className}`} style={{\n borderRadius: '12px',\n overflow: 'hidden',\n boxShadow: '0 1px 3px rgba(0,0,0,0.1)',\n background: 'white',\n }}>\n {showImage && offering.featured_image_url && (\n <div style={{ position: 'relative' }}>\n <img\n src={offering.featured_image_url}\n alt={offering.name}\n className={`site-kit-offering-image ${imageClassName}`}\n style={{\n width: '100%',\n height: '200px',\n objectFit: 'cover',\n }}\n />\n {offering.compare_at_price && offering.price_is_public && (\n <span style={{\n position: 'absolute',\n top: '12px',\n right: '12px',\n background: '#ef4444',\n color: 'white',\n padding: '4px 8px',\n borderRadius: '4px',\n fontSize: '0.75rem',\n fontWeight: 600,\n }}>\n Sale\n </span>\n )}\n </div>\n )}\n \n <div style={{ padding: '1rem' }}>\n {isEvent && nextSchedule && (\n <div className=\"site-kit-offering-date\" style={{ \n color: '#2563eb',\n fontSize: '0.875rem',\n fontWeight: 500,\n marginBottom: '0.25rem',\n }}>\n {formatDate(nextSchedule.starts_at)}\n </div>\n )}\n \n <h3 className={`site-kit-offering-title ${titleClassName}`} style={{\n margin: 0,\n fontSize: '1.125rem',\n fontWeight: 600,\n color: '#111',\n }}>\n {offering.name}\n </h3>\n \n {isEvent && offering.location && (\n <div style={{ color: '#666', fontSize: '0.875rem', marginTop: '0.25rem' }}>\n 📍 {offering.location}\n </div>\n )}\n \n {showDescription && offering.short_description && (\n <p className={`site-kit-offering-description ${descriptionClassName}`} style={{\n color: '#666',\n margin: '0.75rem 0',\n fontSize: '0.875rem',\n lineHeight: 1.5,\n }}>\n {offering.short_description}\n </p>\n )}\n \n <div style={{ \n display: 'flex', \n alignItems: 'center', \n justifyContent: 'space-between',\n marginTop: '1rem',\n }}>\n {showPrice && offering.price_is_public && offering.price != null ? (\n <div className={`site-kit-offering-price ${priceClassName}`}>\n <span style={{ fontWeight: 600, fontSize: '1.25rem', color: '#111' }}>\n {formatPrice(offering.price, offering.currency)}\n </span>\n {offering.compare_at_price && (\n <span style={{ \n textDecoration: 'line-through', \n color: '#999',\n marginLeft: '0.5rem',\n fontSize: '0.875rem',\n }}>\n {formatPrice(offering.compare_at_price, offering.currency)}\n </span>\n )}\n </div>\n ) : (\n <div /> // spacer\n )}\n \n {showCta && (\n <button\n onClick={handleClick}\n className={`site-kit-offering-cta ${ctaClassName}`}\n style={{\n padding: '0.625rem 1.25rem',\n borderRadius: '6px',\n border: 'none',\n background: '#2563eb',\n color: 'white',\n cursor: 'pointer',\n fontWeight: 500,\n fontSize: '0.875rem',\n }}\n >\n {ctaText || defaultCtaText}\n </button>\n )}\n </div>\n </div>\n </div>\n )\n}\n\nexport default OfferingCard\n","/**\n * @uptrade/site-kit/commerce - OfferingList\n * \n * Displays a grid or list of offerings with optional filtering.\n */\n\n'use client'\n\nimport React, { useEffect, useState, useMemo } from 'react'\nimport type { OfferingListProps } from './types'\nimport type { CommerceOffering } from './types'\nimport { OfferingCard } from './OfferingCard'\nimport { fetchOfferings, fetchProducts, fetchUpcomingEvents } from './api'\n\nexport function OfferingList({\n // Data options\n offerings: propOfferings,\n type,\n category,\n limit,\n status = 'active',\n \n // Display options\n layout = 'grid',\n columns = 3,\n cardVariant = 'card',\n showFilters = false,\n emptyMessage = 'No items found.',\n \n // Card options\n showImage = true,\n showPrice = true,\n showDescription = true,\n showCta = true,\n ctaText,\n onCtaClick,\n \n // Styling\n className = '',\n cardClassName = '',\n filterClassName = '',\n \n // Custom render\n renderCard,\n renderEmpty,\n}: OfferingListProps) {\n const [offerings, setOfferings] = useState<CommerceOffering[]>(propOfferings || [])\n const [loading, setLoading] = useState(!propOfferings)\n const [error, setError] = useState<string | null>(null)\n const [activeFilter, setActiveFilter] = useState<string | null>(null)\n \n // Fetch offerings if not provided\n useEffect(() => {\n if (propOfferings) {\n setOfferings(propOfferings)\n return\n }\n \n async function load() {\n setLoading(true)\n setError(null)\n \n try {\n let data: CommerceOffering[]\n \n if (type === 'product') {\n data = await fetchProducts({ category, limit, status })\n } else if (type === 'event') {\n data = await fetchUpcomingEvents({ category, limit })\n } else {\n data = await fetchOfferings({ type, category, limit, status })\n }\n \n setOfferings(data)\n } catch (e) {\n console.error('Failed to load offerings:', e)\n setError('Failed to load items.')\n } finally {\n setLoading(false)\n }\n }\n \n load()\n }, [propOfferings, type, category, limit, status])\n \n // Get unique categories for filtering\n const categories = useMemo(() => {\n const cats = offerings\n .filter(o => o.category)\n .map(o => o.category!)\n \n // Unique by ID\n return Array.from(new Map(cats.map(c => [c.id, c])).values())\n }, [offerings])\n \n // Filtered offerings\n const filteredOfferings = useMemo(() => {\n if (!activeFilter) return offerings\n return offerings.filter(o => o.category?.id === activeFilter)\n }, [offerings, activeFilter])\n \n if (loading) {\n return (\n <div className={`site-kit-offerings-loading ${className}`} style={{\n display: 'flex',\n justifyContent: 'center',\n padding: '2rem',\n }}>\n <div style={{\n width: '40px',\n height: '40px',\n border: '3px solid #e5e7eb',\n borderTopColor: '#2563eb',\n borderRadius: '50%',\n animation: 'spin 1s linear infinite',\n }} />\n <style>{`\n @keyframes spin {\n to { transform: rotate(360deg); }\n }\n `}</style>\n </div>\n )\n }\n \n if (error) {\n return (\n <div className={`site-kit-offerings-error ${className}`} style={{\n textAlign: 'center',\n padding: '2rem',\n color: '#ef4444',\n }}>\n {error}\n </div>\n )\n }\n \n if (filteredOfferings.length === 0) {\n if (renderEmpty) {\n return <>{renderEmpty()}</>\n }\n \n return (\n <div className={`site-kit-offerings-empty ${className}`} style={{\n textAlign: 'center',\n padding: '2rem',\n color: '#666',\n }}>\n {emptyMessage}\n </div>\n )\n }\n \n const gridStyles = layout === 'grid' ? {\n display: 'grid',\n gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))`,\n gap: '1.5rem',\n } : {\n display: 'flex',\n flexDirection: 'column' as const,\n gap: '1rem',\n }\n \n return (\n <div className={`site-kit-offerings ${className}`}>\n {showFilters && categories.length > 1 && (\n <div \n className={`site-kit-offerings-filters ${filterClassName}`}\n style={{\n display: 'flex',\n gap: '0.5rem',\n marginBottom: '1.5rem',\n flexWrap: 'wrap',\n }}\n >\n <button\n onClick={() => setActiveFilter(null)}\n style={{\n padding: '0.5rem 1rem',\n borderRadius: '9999px',\n border: '1px solid',\n borderColor: activeFilter === null ? '#2563eb' : '#e5e7eb',\n background: activeFilter === null ? '#2563eb' : 'white',\n color: activeFilter === null ? 'white' : '#333',\n cursor: 'pointer',\n fontSize: '0.875rem',\n }}\n >\n All\n </button>\n {categories.map(cat => (\n <button\n key={cat.id}\n onClick={() => setActiveFilter(cat.id)}\n style={{\n padding: '0.5rem 1rem',\n borderRadius: '9999px',\n border: '1px solid',\n borderColor: activeFilter === cat.id ? '#2563eb' : '#e5e7eb',\n background: activeFilter === cat.id ? '#2563eb' : 'white',\n color: activeFilter === cat.id ? 'white' : '#333',\n cursor: 'pointer',\n fontSize: '0.875rem',\n }}\n >\n {cat.name}\n </button>\n ))}\n </div>\n )}\n \n <div className=\"site-kit-offerings-grid\" style={gridStyles}>\n {filteredOfferings.map(offering => (\n renderCard ? renderCard(offering) : (\n <OfferingCard\n key={offering.id}\n offering={offering}\n variant={layout === 'list' ? 'horizontal' : cardVariant}\n showImage={showImage}\n showPrice={showPrice}\n showDescription={showDescription}\n showCta={showCta}\n ctaText={ctaText}\n onCtaClick={onCtaClick}\n className={cardClassName}\n />\n )\n ))}\n </div>\n </div>\n )\n}\n\nexport default OfferingList\n","/**\n * @uptrade/site-kit/commerce - EventTile\n * \n * Compact tile for displaying an event with date, title, and registration button.\n * Great for embedding on homepages or sidebars.\n */\n\n'use client'\n\nimport React, { useState } from 'react'\nimport type { EventTileProps, CommerceOffering } from './types'\nimport { formatDate, formatTime, getRelativeTimeUntil, getSpotsRemaining, isEventSoldOut } from './utils'\nimport { registerForEvent, createCheckoutSession } from './api'\n\nexport function EventTile({\n event,\n variant = 'standard',\n showDate = true,\n showTime = true,\n showLocation = true,\n showCapacity = true,\n showPrice = true,\n showCta = true,\n ctaText,\n onRegister,\n onCtaClick,\n className = '',\n dateClassName = '',\n titleClassName = '',\n ctaClassName = '',\n}: EventTileProps) {\n const [loading, setLoading] = useState(false)\n \n const schedule = event.schedules?.[0] || (event as any).next_schedule\n const soldOut = schedule ? isEventSoldOut(schedule.capacity, schedule.current_registrations) : false\n const spotsRemaining = schedule ? getSpotsRemaining(schedule.capacity, schedule.current_registrations) : null\n \n const defaultCtaText = event.price && event.price > 0 ? 'Get Tickets' : 'Register Free'\n \n const handleClick = async () => {\n if (onCtaClick) {\n onCtaClick(event)\n return\n }\n \n // If no schedule, go to event page\n if (!schedule) {\n window.location.href = `/events/${event.slug}`\n return\n }\n \n // If custom onRegister handler\n if (onRegister) {\n onRegister(event, schedule.id)\n return\n }\n \n // Default: create checkout session for paid, or go to registration page\n setLoading(true)\n try {\n if (event.price && event.price > 0) {\n const result = await createCheckoutSession(event.id, { scheduleId: schedule.id })\n if (result.payment_url) {\n window.location.href = result.payment_url\n }\n } else {\n // Free event - go to registration page\n window.location.href = `/events/${event.slug}/register`\n }\n } catch (e) {\n console.error('Registration error:', e)\n } finally {\n setLoading(false)\n }\n }\n \n if (variant === 'compact') {\n return (\n <div className={`site-kit-event-tile-compact ${className}`} style={{\n display: 'flex',\n alignItems: 'center',\n gap: '0.75rem',\n padding: '0.75rem',\n background: 'white',\n borderRadius: '8px',\n boxShadow: '0 1px 2px rgba(0,0,0,0.05)',\n }}>\n {showDate && schedule && (\n <div className={`site-kit-event-date ${dateClassName}`} style={{\n minWidth: '48px',\n textAlign: 'center',\n padding: '0.5rem',\n background: '#f3f4f6',\n borderRadius: '6px',\n }}>\n <div style={{ fontSize: '0.75rem', color: '#666', textTransform: 'uppercase' }}>\n {new Date(schedule.starts_at).toLocaleDateString('en-US', { month: 'short' })}\n </div>\n <div style={{ fontSize: '1.25rem', fontWeight: 700, color: '#111' }}>\n {new Date(schedule.starts_at).getDate()}\n </div>\n </div>\n )}\n \n <div style={{ flex: 1, minWidth: 0 }}>\n <h4 className={`site-kit-event-title ${titleClassName}`} style={{\n margin: 0,\n fontSize: '0.875rem',\n fontWeight: 600,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}>\n {event.name}\n </h4>\n {showTime && schedule && (\n <div style={{ fontSize: '0.75rem', color: '#666' }}>\n {formatTime(schedule.starts_at)}\n {showLocation && event.location && ` • ${event.location}`}\n </div>\n )}\n </div>\n \n {showCta && (\n <button\n onClick={handleClick}\n disabled={soldOut || loading}\n className={`site-kit-event-cta ${ctaClassName}`}\n style={{\n padding: '0.375rem 0.75rem',\n fontSize: '0.75rem',\n borderRadius: '4px',\n border: 'none',\n background: soldOut ? '#e5e7eb' : '#2563eb',\n color: soldOut ? '#666' : 'white',\n cursor: soldOut ? 'not-allowed' : 'pointer',\n fontWeight: 500,\n whiteSpace: 'nowrap',\n }}\n >\n {soldOut ? 'Sold Out' : (loading ? '...' : (ctaText || defaultCtaText))}\n </button>\n )}\n </div>\n )\n }\n \n // Standard variant\n return (\n <div className={`site-kit-event-tile ${className}`} style={{\n background: 'white',\n borderRadius: '12px',\n overflow: 'hidden',\n boxShadow: '0 1px 3px rgba(0,0,0,0.1)',\n }}>\n {event.featured_image_url && (\n <img\n src={event.featured_image_url}\n alt={event.name}\n style={{\n width: '100%',\n height: '140px',\n objectFit: 'cover',\n }}\n />\n )}\n \n <div style={{ padding: '1rem' }}>\n {showDate && schedule && (\n <div className={`site-kit-event-date ${dateClassName}`} style={{\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n marginBottom: '0.5rem',\n }}>\n <span style={{\n background: '#dbeafe',\n color: '#1d4ed8',\n padding: '0.25rem 0.5rem',\n borderRadius: '4px',\n fontSize: '0.75rem',\n fontWeight: 600,\n }}>\n {getRelativeTimeUntil(schedule.starts_at)}\n </span>\n <span style={{ fontSize: '0.875rem', color: '#666' }}>\n {formatDate(schedule.starts_at)}\n </span>\n </div>\n )}\n \n <h3 className={`site-kit-event-title ${titleClassName}`} style={{\n margin: '0 0 0.5rem',\n fontSize: '1.125rem',\n fontWeight: 600,\n color: '#111',\n }}>\n {event.name}\n </h3>\n \n {showLocation && event.location && (\n <div style={{ fontSize: '0.875rem', color: '#666', marginBottom: '0.5rem' }}>\n 📍 {event.location}\n </div>\n )}\n \n {showTime && schedule && (\n <div style={{ fontSize: '0.875rem', color: '#666', marginBottom: '0.75rem' }}>\n 🕐 {formatTime(schedule.starts_at)}\n {schedule.ends_at && ` - ${formatTime(schedule.ends_at)}`}\n </div>\n )}\n \n <div style={{ \n display: 'flex', \n justifyContent: 'space-between', \n alignItems: 'center',\n marginTop: '0.75rem',\n }}>\n <div>\n {showPrice && event.price_is_public && event.price != null && (\n <span style={{ fontWeight: 600, color: '#111' }}>\n {event.price === 0 ? 'Free' : `$${event.price}`}\n </span>\n )}\n {showCapacity && spotsRemaining !== null && spotsRemaining <= 10 && !soldOut && (\n <span style={{ \n fontSize: '0.75rem', \n color: '#dc2626',\n marginLeft: '0.5rem',\n }}>\n Only {spotsRemaining} spots left!\n </span>\n )}\n </div>\n \n {showCta && (\n <button\n onClick={handleClick}\n disabled={soldOut || loading}\n className={`site-kit-event-cta ${ctaClassName}`}\n style={{\n padding: '0.5rem 1rem',\n borderRadius: '6px',\n border: 'none',\n background: soldOut ? '#e5e7eb' : '#2563eb',\n color: soldOut ? '#666' : 'white',\n cursor: soldOut ? 'not-allowed' : 'pointer',\n fontWeight: 500,\n fontSize: '0.875rem',\n }}\n >\n {soldOut ? 'Sold Out' : (loading ? 'Loading...' : (ctaText || defaultCtaText))}\n </button>\n )}\n </div>\n </div>\n </div>\n )\n}\n\nexport default EventTile\n","/**\n * @uptrade/site-kit/commerce - UpcomingEvents\n * \n * Displays a list of upcoming events with date, title, and registration buttons.\n */\n\n'use client'\n\nimport React, { useEffect, useState } from 'react'\nimport type { UpcomingEventsProps, CommerceOffering } from './types'\nimport { EventTile } from './EventTile'\nimport { fetchUpcomingEvents } from './api'\n\nexport function UpcomingEvents({\n events: propEvents,\n limit = 3,\n category,\n variant = 'standard',\n layout = 'vertical',\n showViewAll = true,\n viewAllUrl = '/events',\n viewAllText = 'View All Events',\n emptyMessage = 'No upcoming events.',\n title,\n onRegister,\n onCtaClick,\n className = '',\n titleClassName = '',\n eventClassName = '',\n}: UpcomingEventsProps) {\n const [events, setEvents] = useState<CommerceOffering[]>(propEvents || [])\n const [loading, setLoading] = useState(!propEvents)\n \n useEffect(() => {\n if (propEvents) {\n setEvents(propEvents)\n return\n }\n \n async function load() {\n setLoading(true)\n try {\n const data = await fetchUpcomingEvents({ limit, category })\n setEvents(data)\n } catch (e) {\n console.error('Failed to load events:', e)\n } finally {\n setLoading(false)\n }\n }\n \n load()\n }, [propEvents, limit, category])\n \n if (loading) {\n return (\n <div className={`site-kit-upcoming-events ${className}`}>\n <div style={{ padding: '2rem', textAlign: 'center', color: '#666' }}>\n Loading events...\n </div>\n </div>\n )\n }\n \n if (events.length === 0) {\n return (\n <div className={`site-kit-upcoming-events ${className}`}>\n {title && (\n <h2 className={`site-kit-upcoming-events-title ${titleClassName}`} style={{\n margin: '0 0 1rem',\n fontSize: '1.5rem',\n fontWeight: 600,\n }}>\n {title}\n </h2>\n )}\n <div style={{ padding: '2rem', textAlign: 'center', color: '#666' }}>\n {emptyMessage}\n </div>\n </div>\n )\n }\n \n const layoutStyles = layout === 'horizontal' ? {\n display: 'flex',\n gap: '1rem',\n overflowX: 'auto' as const,\n } : {\n display: 'flex',\n flexDirection: 'column' as const,\n gap: '1rem',\n }\n \n return (\n <div className={`site-kit-upcoming-events ${className}`}>\n {title && (\n <div style={{ \n display: 'flex', \n justifyContent: 'space-between', \n alignItems: 'center',\n marginBottom: '1rem',\n }}>\n <h2 className={`site-kit-upcoming-events-title ${titleClassName}`} style={{\n margin: 0,\n fontSize: '1.5rem',\n fontWeight: 600,\n }}>\n {title}\n </h2>\n \n {showViewAll && events.length >= limit && (\n <a\n href={viewAllUrl}\n style={{\n color: '#2563eb',\n textDecoration: 'none',\n fontSize: '0.875rem',\n fontWeight: 500,\n }}\n >\n {viewAllText} →\n </a>\n )}\n </div>\n )}\n \n <div style={layoutStyles}>\n {events.map(event => (\n <div \n key={event.id} \n className={eventClassName}\n style={layout === 'horizontal' ? { minWidth: '280px', flex: '0 0 auto' } : undefined}\n >\n <EventTile\n event={event}\n variant={variant}\n onRegister={onRegister}\n onCtaClick={onCtaClick}\n />\n </div>\n ))}\n </div>\n \n {showViewAll && events.length >= limit && !title && (\n <div style={{ textAlign: 'center', marginTop: '1.5rem' }}>\n <a\n href={viewAllUrl}\n style={{\n display: 'inline-block',\n padding: '0.75rem 1.5rem',\n background: '#f3f4f6',\n color: '#333',\n borderRadius: '8px',\n textDecoration: 'none',\n fontWeight: 500,\n }}\n >\n {viewAllText}\n </a>\n </div>\n )}\n </div>\n )\n}\n\nexport default UpcomingEvents\n","/**\n * @uptrade/site-kit/commerce - ProductEmbed\n * \n * Embeddable widget for displaying a single product on a homepage or landing page.\n * Supports showing latest product, specific product by slug, or a random featured product.\n */\n\n'use client'\n\nimport React, { useEffect, useState } from 'react'\nimport type { ProductEmbedProps, CommerceOffering } from './types'\nimport { OfferingCard } from './OfferingCard'\nimport { fetchOffering, fetchLatestOffering } from './api'\n\nexport function ProductEmbed({\n product: propProduct,\n slug,\n mode = 'specific', // 'specific', 'latest', 'featured'\n category,\n variant = 'card',\n showImage = true,\n showPrice = true,\n showDescription = true,\n showCta = true,\n ctaText = 'Shop Now',\n onCtaClick,\n className = '',\n}: ProductEmbedProps) {\n const [product, setProduct] = useState<CommerceOffering | null>(propProduct || null)\n const [loading, setLoading] = useState(!propProduct && !!slug)\n \n useEffect(() => {\n if (propProduct) {\n setProduct(propProduct)\n return\n }\n \n async function load() {\n setLoading(true)\n try {\n let data: CommerceOffering | null = null\n \n if (mode === 'specific' && slug) {\n data = await fetchOffering(slug)\n } else if (mode === 'latest' || mode === 'featured') {\n data = await fetchLatestOffering('product', category)\n }\n \n setProduct(data)\n } catch (e) {\n console.error('Failed to load product:', e)\n } finally {\n setLoading(false)\n }\n }\n \n load()\n }, [propProduct, slug, mode, category])\n \n if (loading) {\n return (\n <div className={`site-kit-product-embed ${className}`} style={{\n padding: '2rem',\n textAlign: 'center',\n background: '#f9fafb',\n borderRadius: '12px',\n }}>\n <div style={{\n width: '40px',\n height: '40px',\n margin: '0 auto',\n border: '3px solid #e5e7eb',\n borderTopColor: '#2563eb',\n borderRadius: '50%',\n animation: 'spin 1s linear infinite',\n }} />\n <style>{`\n @keyframes spin {\n to { transform: rotate(360deg); }\n }\n `}</style>\n </div>\n )\n }\n \n if (!product) {\n return null // Silent fail - don't show anything if no product\n }\n \n return (\n <div className={`site-kit-product-embed ${className}`}>\n <OfferingCard\n offering={product}\n variant={variant}\n showImage={showImage}\n showPrice={showPrice}\n showDescription={showDescription}\n showCta={showCta}\n ctaText={ctaText}\n onCtaClick={onCtaClick}\n />\n </div>\n )\n}\n\nexport default ProductEmbed\n","/**\n * @uptrade/site-kit/commerce - ProductDetail\n * \n * Full product detail view with image gallery, variants, pricing, and checkout.\n * Use on product pages for complete product information display.\n */\n\n'use client'\n\nimport React, { useState, useEffect } from 'react'\nimport type { CommerceOffering, CommerceVariant, CheckoutResult } from './types'\nimport { formatPrice } from './utils'\nimport { fetchOffering, createCheckoutSession } from './api'\n\nexport interface ProductDetailProps {\n /** Pre-loaded product data (for SSR) */\n product?: CommerceOffering\n /** Product slug to fetch (if not pre-loaded) */\n slug?: string\n /** Show add to cart button */\n showAddToCart?: boolean\n /** Show buy now button */\n showBuyNow?: boolean\n /** Show quantity selector */\n showQuantity?: boolean\n /** Show variant selector */\n showVariants?: boolean\n /** Show product gallery */\n showGallery?: boolean\n /** Show product features */\n showFeatures?: boolean\n /** Show specifications table */\n showSpecifications?: boolean\n /** Success URL after checkout */\n successUrl?: string\n /** Cancel URL if checkout cancelled */\n cancelUrl?: string\n /** Callback when added to cart */\n onAddToCart?: (product: CommerceOffering, variant?: CommerceVariant, quantity?: number) => void\n /** Callback when buy now clicked */\n onBuyNow?: (product: CommerceOffering, variant?: CommerceVariant, quantity?: number) => void\n /** Callback on checkout success */\n onCheckoutSuccess?: (result: CheckoutResult) => void\n /** Callback on checkout error */\n onCheckoutError?: (error: string) => void\n /** Additional class names */\n className?: string\n /** Custom styles */\n style?: React.CSSProperties\n}\n\nexport function ProductDetail({\n product: propProduct,\n slug,\n showAddToCart = true,\n showBuyNow = true,\n showQuantity = true,\n showVariants = true,\n showGallery = true,\n showFeatures = true,\n showSpecifications = true,\n successUrl,\n cancelUrl,\n onAddToCart,\n onBuyNow,\n onCheckoutSuccess,\n onCheckoutError,\n className = '',\n style,\n}: ProductDetailProps) {\n const [product, setProduct] = useState<CommerceOffering | null>(propProduct || null)\n const [loading, setLoading] = useState(!propProduct && !!slug)\n const [selectedVariant, setSelectedVariant] = useState<CommerceVariant | undefined>()\n const [quantity, setQuantity] = useState(1)\n const [selectedImage, setSelectedImage] = useState(0)\n const [checkingOut, setCheckingOut] = useState(false)\n\n // Fetch product if not provided\n useEffect(() => {\n if (propProduct) {\n setProduct(propProduct)\n // Set default variant\n const defaultVariant = propProduct.variants?.find(v => v.is_default) || propProduct.variants?.[0]\n setSelectedVariant(defaultVariant)\n return\n }\n\n if (!slug) return\n\n async function load() {\n setLoading(true)\n try {\n const data = await fetchOffering(slug!)\n setProduct(data)\n if (data?.variants?.length) {\n const defaultVariant = data.variants.find(v => v.is_default) || data.variants[0]\n setSelectedVariant(defaultVariant)\n }\n } catch (e) {\n console.error('Failed to load product:', e)\n } finally {\n setLoading(false)\n }\n }\n\n load()\n }, [propProduct, slug])\n\n if (loading) {\n return (\n <div className={`site-kit-product-detail site-kit-product-detail--loading ${className}`} style={style}>\n <div className=\"site-kit-product-detail__loader\" style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minHeight: '400px',\n }}>\n <div style={{\n width: '48px',\n height: '48px',\n border: '3px solid #e5e7eb',\n borderTopColor: '#2563eb',\n borderRadius: '50%',\n animation: 'spin 1s linear infinite',\n }} />\n </div>\n <style>{`@keyframes spin { to { transform: rotate(360deg); } }`}</style>\n </div>\n )\n }\n\n if (!product) {\n return (\n <div className={`site-kit-product-detail site-kit-product-detail--not-found ${className}`} style={style}>\n <div style={{ textAlign: 'center', padding: '4rem 2rem', color: '#666' }}>\n <h2 style={{ margin: 0, fontSize: '1.5rem', color: '#333' }}>Product Not Found</h2>\n <p style={{ marginTop: '0.5rem' }}>The product you're looking for doesn't exist or has been removed.</p>\n </div>\n </div>\n )\n }\n\n // Get current price (from variant or product)\n const currentPrice = selectedVariant?.price ?? product.price ?? 0\n const compareAtPrice = product.compare_at_price\n const hasDiscount = compareAtPrice && compareAtPrice > currentPrice\n\n // Get all images\n const allImages = [\n product.featured_image_url,\n ...(product.gallery_images || []),\n ...(product.variants?.map(v => v.image_url).filter(Boolean) || []),\n ].filter(Boolean) as string[]\n\n // Check inventory\n const inventoryCount = selectedVariant?.inventory_count ?? product.inventory_count\n const isOutOfStock = product.track_inventory && inventoryCount !== undefined && inventoryCount <= 0\n const isLowStock = product.track_inventory && inventoryCount !== undefined && inventoryCount > 0 && inventoryCount <= 5\n\n const handleAddToCart = () => {\n if (onAddToCart) {\n onAddToCart(product, selectedVariant, quantity)\n }\n }\n\n const handleBuyNow = async () => {\n if (onBuyNow) {\n onBuyNow(product, selectedVariant, quantity)\n return\n }\n\n // Default: Create checkout session\n setCheckingOut(true)\n try {\n const result = await createCheckoutSession({\n offeringId: product.id,\n variantId: selectedVariant?.id,\n quantity,\n successUrl: successUrl || `${window.location.origin}/checkout/success`,\n cancelUrl: cancelUrl || window.location.href,\n })\n\n if (result.success && result.checkout_url) {\n onCheckoutSuccess?.(result)\n window.location.href = result.checkout_url\n } else {\n throw new Error(result.error || 'Failed to create checkout')\n }\n } catch (error: any) {\n console.error('Checkout error:', error)\n onCheckoutError?.(error.message || 'Checkout failed')\n } finally {\n setCheckingOut(false)\n }\n }\n\n const handleVariantChange = (variant: CommerceVariant) => {\n setSelectedVariant(variant)\n // If variant has its own image, switch to it\n if (variant.image_url) {\n const imageIndex = allImages.indexOf(variant.image_url)\n if (imageIndex >= 0) setSelectedImage(imageIndex)\n }\n }\n\n return (\n <div className={`site-kit-product-detail ${className}`} style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(320px, 1fr))',\n gap: '2rem',\n ...style,\n }}>\n {/* Image Gallery */}\n {showGallery && allImages.length > 0 && (\n <div className=\"site-kit-product-detail__gallery\">\n {/* Main Image */}\n <div className=\"site-kit-product-detail__main-image\" style={{\n aspectRatio: '1',\n borderRadius: '12px',\n overflow: 'hidden',\n backgroundColor: '#f9fafb',\n }}>\n <img\n src={allImages[selectedImage]}\n alt={product.name}\n style={{\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n }}\n />\n </div>\n\n {/* Thumbnails */}\n {allImages.length > 1 && (\n <div className=\"site-kit-product-detail__thumbnails\" style={{\n display: 'flex',\n gap: '0.5rem',\n marginTop: '0.75rem',\n overflowX: 'auto',\n }}>\n {allImages.map((img, idx) => (\n <button\n key={idx}\n onClick={() => setSelectedImage(idx)}\n style={{\n flex: '0 0 auto',\n width: '64px',\n height: '64px',\n borderRadius: '8px',\n overflow: 'hidden',\n border: idx === selectedImage ? '2px solid #2563eb' : '2px solid transparent',\n padding: 0,\n cursor: 'pointer',\n backgroundColor: '#f9fafb',\n }}\n >\n <img\n src={img}\n alt={`${product.name} ${idx + 1}`}\n style={{\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n }}\n />\n </button>\n ))}\n </div>\n )}\n </div>\n )}\n\n {/* Product Info */}\n <div className=\"site-kit-product-detail__info\">\n {/* Category */}\n {product.category && (\n <div className=\"site-kit-product-detail__category\" style={{\n fontSize: '0.875rem',\n color: '#6b7280',\n marginBottom: '0.5rem',\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n }}>\n {product.category.name}\n </div>\n )}\n\n {/* Title */}\n <h1 className=\"site-kit-product-detail__title\" style={{\n margin: 0,\n fontSize: '2rem',\n fontWeight: 700,\n color: '#111827',\n lineHeight: 1.2,\n }}>\n {product.name}\n </h1>\n\n {/* Short Description */}\n {product.short_description && (\n <p className=\"site-kit-product-detail__short-description\" style={{\n marginTop: '0.75rem',\n fontSize: '1rem',\n color: '#4b5563',\n lineHeight: 1.6,\n }}>\n {product.short_description}\n </p>\n )}\n\n {/* Price */}\n {product.price_is_public && currentPrice !== undefined && (\n <div className=\"site-kit-product-detail__price\" style={{\n marginTop: '1rem',\n display: 'flex',\n alignItems: 'baseline',\n gap: '0.75rem',\n }}>\n <span style={{\n fontSize: '1.75rem',\n fontWeight: 700,\n color: hasDiscount ? '#dc2626' : '#111827',\n }}>\n {formatPrice(currentPrice, product.currency)}\n </span>\n {hasDiscount && (\n <span style={{\n fontSize: '1.25rem',\n color: '#9ca3af',\n textDecoration: 'line-through',\n }}>\n {formatPrice(compareAtPrice, product.currency)}\n </span>\n )}\n </div>\n )}\n\n {/* Stock Status */}\n {product.track_inventory && (\n <div className=\"site-kit-product-detail__stock\" style={{\n marginTop: '0.75rem',\n fontSize: '0.875rem',\n fontWeight: 500,\n }}>\n {isOutOfStock ? (\n <span style={{ color: '#dc2626' }}>Out of Stock</span>\n ) : isLowStock ? (\n <span style={{ color: '#f59e0b' }}>Only {inventoryCount} left!</span>\n ) : (\n <span style={{ color: '#10b981' }}>In Stock</span>\n )}\n </div>\n )}\n\n {/* Variants */}\n {showVariants && product.variants && product.variants.length > 1 && (\n <div className=\"site-kit-product-detail__variants\" style={{ marginTop: '1.5rem' }}>\n <label style={{\n display: 'block',\n fontSize: '0.875rem',\n fontWeight: 600,\n color: '#374151',\n marginBottom: '0.5rem',\n }}>\n Options\n </label>\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: '0.5rem' }}>\n {product.variants.map(variant => (\n <button\n key={variant.id}\n onClick={() => handleVariantChange(variant)}\n style={{\n padding: '0.5rem 1rem',\n borderRadius: '8px',\n border: selectedVariant?.id === variant.id \n ? '2px solid #2563eb' \n : '1px solid #d1d5db',\n backgroundColor: selectedVariant?.id === variant.id ? '#eff6ff' : 'white',\n color: '#374151',\n fontSize: '0.875rem',\n fontWeight: 500,\n cursor: 'pointer',\n transition: 'all 0.15s ease',\n }}\n >\n {variant.name}\n </button>\n ))}\n </div>\n </div>\n )}\n\n {/* Quantity */}\n {showQuantity && !isOutOfStock && (\n <div className=\"site-kit-product-detail__quantity\" style={{ marginTop: '1.5rem' }}>\n <label style={{\n display: 'block',\n fontSize: '0.875rem',\n fontWeight: 600,\n color: '#374151',\n marginBottom: '0.5rem',\n }}>\n Quantity\n </label>\n <div style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}>\n <button\n onClick={() => setQuantity(Math.max(1, quantity - 1))}\n disabled={quantity <= 1}\n style={{\n width: '40px',\n height: '40px',\n borderRadius: '8px',\n border: '1px solid #d1d5db',\n backgroundColor: 'white',\n fontSize: '1.25rem',\n cursor: quantity <= 1 ? 'not-allowed' : 'pointer',\n opacity: quantity <= 1 ? 0.5 : 1,\n }}\n >\n −\n </button>\n <input\n type=\"number\"\n min=\"1\"\n max={inventoryCount ?? 99}\n value={quantity}\n onChange={(e) => setQuantity(Math.max(1, parseInt(e.target.value) || 1))}\n style={{\n width: '60px',\n height: '40px',\n textAlign: 'center',\n borderRadius: '8px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n }}\n />\n <button\n onClick={() => setQuantity(quantity + 1)}\n disabled={product.track_inventory && inventoryCount !== undefined && quantity >= inventoryCount}\n style={{\n width: '40px',\n height: '40px',\n borderRadius: '8px',\n border: '1px solid #d1d5db',\n backgroundColor: 'white',\n fontSize: '1.25rem',\n cursor: 'pointer',\n }}\n >\n +\n </button>\n </div>\n </div>\n )}\n\n {/* Action Buttons */}\n <div className=\"site-kit-product-detail__actions\" style={{\n marginTop: '1.5rem',\n display: 'flex',\n flexDirection: 'column',\n gap: '0.75rem',\n }}>\n {showBuyNow && (\n <button\n onClick={handleBuyNow}\n disabled={isOutOfStock || checkingOut}\n className=\"site-kit-product-detail__buy-now\"\n style={{\n padding: '1rem 2rem',\n borderRadius: '8px',\n border: 'none',\n backgroundColor: isOutOfStock ? '#d1d5db' : '#2563eb',\n color: 'white',\n fontSize: '1rem',\n fontWeight: 600,\n cursor: isOutOfStock ? 'not-allowed' : 'pointer',\n transition: 'all 0.15s ease',\n }}\n >\n {checkingOut ? 'Processing...' : isOutOfStock ? 'Out of Stock' : 'Buy Now'}\n </button>\n )}\n {showAddToCart && onAddToCart && (\n <button\n onClick={handleAddToCart}\n disabled={isOutOfStock}\n className=\"site-kit-product-detail__add-to-cart\"\n style={{\n padding: '1rem 2rem',\n borderRadius: '8px',\n border: '2px solid #2563eb',\n backgroundColor: 'white',\n color: '#2563eb',\n fontSize: '1rem',\n fontWeight: 600,\n cursor: isOutOfStock ? 'not-allowed' : 'pointer',\n transition: 'all 0.15s ease',\n }}\n >\n Add to Cart\n </button>\n )}\n </div>\n\n {/* Features */}\n {showFeatures && product.features && product.features.length > 0 && (\n <div className=\"site-kit-product-detail__features\" style={{ marginTop: '2rem' }}>\n <h3 style={{\n fontSize: '1rem',\n fontWeight: 600,\n color: '#111827',\n marginBottom: '0.75rem',\n }}>\n Features\n </h3>\n <ul style={{\n margin: 0,\n paddingLeft: '1.25rem',\n display: 'flex',\n flexDirection: 'column',\n gap: '0.5rem',\n }}>\n {product.features.map((feature, idx) => (\n <li key={idx} style={{ color: '#4b5563', fontSize: '0.9375rem' }}>\n {feature}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {/* Specifications */}\n {showSpecifications && product.specifications && Object.keys(product.specifications).length > 0 && (\n <div className=\"site-kit-product-detail__specifications\" style={{ marginTop: '2rem' }}>\n <h3 style={{\n fontSize: '1rem',\n fontWeight: 600,\n color: '#111827',\n marginBottom: '0.75rem',\n }}>\n Specifications\n </h3>\n <dl style={{\n margin: 0,\n display: 'grid',\n gridTemplateColumns: 'auto 1fr',\n gap: '0.5rem 1rem',\n }}>\n {Object.entries(product.specifications).map(([key, value]) => (\n <React.Fragment key={key}>\n <dt style={{ color: '#6b7280', fontSize: '0.875rem' }}>{key}</dt>\n <dd style={{ margin: 0, color: '#111827', fontSize: '0.875rem' }}>{value}</dd>\n </React.Fragment>\n ))}\n </dl>\n </div>\n )}\n </div>\n\n {/* Long Description */}\n {product.long_description && (\n <div \n className=\"site-kit-product-detail__description\"\n style={{\n gridColumn: '1 / -1',\n marginTop: '2rem',\n padding: '2rem',\n backgroundColor: '#f9fafb',\n borderRadius: '12px',\n }}\n >\n <h2 style={{\n fontSize: '1.25rem',\n fontWeight: 600,\n color: '#111827',\n marginBottom: '1rem',\n }}>\n About This Product\n </h2>\n <div \n style={{ color: '#4b5563', lineHeight: 1.7 }}\n dangerouslySetInnerHTML={{ __html: product.long_description }}\n />\n </div>\n )}\n </div>\n )\n}\n","/**\n * @uptrade/site-kit/commerce - ProductGrid\n * \n * Grid layout for displaying multiple products with filtering and sorting.\n * Ideal for shop pages, category pages, and product listings.\n */\n\n'use client'\n\nimport React, { useState, useEffect, useMemo } from 'react'\nimport type { CommerceOffering, CommerceCategory } from './types'\nimport { OfferingCard } from './OfferingCard'\nimport { fetchOfferings } from './api'\n\nexport interface ProductGridProps {\n /** Pre-loaded products (for SSR) */\n products?: CommerceOffering[]\n /** Limit number of products */\n limit?: number\n /** Category to filter by */\n category?: string\n /** Show category filter */\n showCategoryFilter?: boolean\n /** Show sort dropdown */\n showSort?: boolean\n /** Show search input */\n showSearch?: boolean\n /** Number of columns (responsive) */\n columns?: 2 | 3 | 4\n /** Loading skeleton count */\n skeletonCount?: number\n /** Custom empty state message */\n emptyMessage?: string\n /** Callback when product is clicked */\n onProductClick?: (product: CommerceOffering) => void\n /** Navigate to product page on click */\n linkToProduct?: boolean\n /** Base path for product links */\n productBasePath?: string\n /** Additional class names */\n className?: string\n /** Card variant style */\n cardVariant?: 'card' | 'minimal' | 'horizontal'\n /** Custom styles */\n style?: React.CSSProperties\n}\n\ntype SortOption = 'newest' | 'oldest' | 'price-low' | 'price-high' | 'name-az' | 'name-za'\n\nexport function ProductGrid({\n products: propProducts,\n limit,\n category: propCategory,\n showCategoryFilter = false,\n showSort = true,\n showSearch = true,\n columns = 3,\n skeletonCount = 6,\n emptyMessage = 'No products found',\n onProductClick,\n linkToProduct = true,\n productBasePath = '/shop',\n className = '',\n cardVariant = 'card',\n style,\n}: ProductGridProps) {\n const [products, setProducts] = useState<CommerceOffering[]>(propProducts || [])\n const [loading, setLoading] = useState(!propProducts)\n const [searchQuery, setSearchQuery] = useState('')\n const [selectedCategory, setSelectedCategory] = useState<string | undefined>(propCategory)\n const [sortBy, setSortBy] = useState<SortOption>('newest')\n\n // Extract unique categories from products\n const categories = useMemo(() => {\n const categoryMap = new Map<string, CommerceCategory>()\n products.forEach(p => {\n if (p.category) {\n categoryMap.set(p.category.id, p.category)\n }\n })\n return Array.from(categoryMap.values())\n }, [products])\n\n // Fetch products\n useEffect(() => {\n if (propProducts) {\n setProducts(propProducts)\n return\n }\n\n async function load() {\n setLoading(true)\n try {\n const data = await fetchOfferings({\n type: 'product',\n category: selectedCategory,\n limit,\n orderBy: 'created_at',\n order: 'desc',\n })\n setProducts(data)\n } catch (e) {\n console.error('Failed to load products:', e)\n } finally {\n setLoading(false)\n }\n }\n\n load()\n }, [propProducts, selectedCategory, limit])\n\n // Filter and sort products\n const filteredProducts = useMemo(() => {\n let filtered = [...products]\n\n // Search filter\n if (searchQuery) {\n const query = searchQuery.toLowerCase()\n filtered = filtered.filter(p => \n p.name.toLowerCase().includes(query) ||\n p.short_description?.toLowerCase().includes(query) ||\n p.tags?.some(tag => tag.toLowerCase().includes(query))\n )\n }\n\n // Category filter (if not already filtered by fetch)\n if (selectedCategory && !propCategory) {\n filtered = filtered.filter(p => p.category_id === selectedCategory)\n }\n\n // Sort\n switch (sortBy) {\n case 'newest':\n filtered.sort((a, b) => new Date(b.created_at).getTime() - new Date(a.created_at).getTime())\n break\n case 'oldest':\n filtered.sort((a, b) => new Date(a.created_at).getTime() - new Date(b.created_at).getTime())\n break\n case 'price-low':\n filtered.sort((a, b) => (a.price || 0) - (b.price || 0))\n break\n case 'price-high':\n filtered.sort((a, b) => (b.price || 0) - (a.price || 0))\n break\n case 'name-az':\n filtered.sort((a, b) => a.name.localeCompare(b.name))\n break\n case 'name-za':\n filtered.sort((a, b) => b.name.localeCompare(a.name))\n break\n }\n\n return filtered\n }, [products, searchQuery, selectedCategory, sortBy, propCategory])\n\n const handleProductClick = (product: CommerceOffering) => {\n if (onProductClick) {\n onProductClick(product)\n } else if (linkToProduct && typeof window !== 'undefined') {\n window.location.href = `${productBasePath}/${product.slug}`\n }\n }\n\n // Grid column styles\n const gridColumns = {\n 2: 'repeat(auto-fill, minmax(280px, 1fr))',\n 3: 'repeat(auto-fill, minmax(240px, 1fr))',\n 4: 'repeat(auto-fill, minmax(200px, 1fr))',\n }\n\n return (\n <div className={`site-kit-product-grid ${className}`} style={style}>\n {/* Filters & Controls */}\n {(showSearch || showSort || showCategoryFilter) && (\n <div className=\"site-kit-product-grid__controls\" style={{\n display: 'flex',\n flexWrap: 'wrap',\n gap: '1rem',\n marginBottom: '1.5rem',\n alignItems: 'center',\n }}>\n {/* Search */}\n {showSearch && (\n <div className=\"site-kit-product-grid__search\" style={{ flex: '1 1 200px' }}>\n <input\n type=\"search\"\n placeholder=\"Search products...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n style={{\n width: '100%',\n padding: '0.625rem 1rem',\n borderRadius: '8px',\n border: '1px solid #d1d5db',\n fontSize: '0.9375rem',\n }}\n />\n </div>\n )}\n\n {/* Category Filter */}\n {showCategoryFilter && categories.length > 0 && (\n <select\n value={selectedCategory || ''}\n onChange={(e) => setSelectedCategory(e.target.value || undefined)}\n className=\"site-kit-product-grid__category-filter\"\n style={{\n padding: '0.625rem 1rem',\n borderRadius: '8px',\n border: '1px solid #d1d5db',\n fontSize: '0.9375rem',\n backgroundColor: 'white',\n minWidth: '150px',\n }}\n >\n <option value=\"\">All Categories</option>\n {categories.map(cat => (\n <option key={cat.id} value={cat.id}>{cat.name}</option>\n ))}\n </select>\n )}\n\n {/* Sort */}\n {showSort && (\n <select\n value={sortBy}\n onChange={(e) => setSortBy(e.target.value as SortOption)}\n className=\"site-kit-product-grid__sort\"\n style={{\n padding: '0.625rem 1rem',\n borderRadius: '8px',\n border: '1px solid #d1d5db',\n fontSize: '0.9375rem',\n backgroundColor: 'white',\n }}\n >\n <option value=\"newest\">Newest First</option>\n <option value=\"oldest\">Oldest First</option>\n <option value=\"price-low\">Price: Low to High</option>\n <option value=\"price-high\">Price: High to Low</option>\n <option value=\"name-az\">Name: A-Z</option>\n <option value=\"name-za\">Name: Z-A</option>\n </select>\n )}\n\n {/* Results count */}\n <div className=\"site-kit-product-grid__count\" style={{\n marginLeft: 'auto',\n fontSize: '0.875rem',\n color: '#6b7280',\n }}>\n {filteredProducts.length} product{filteredProducts.length !== 1 ? 's' : ''}\n </div>\n </div>\n )}\n\n {/* Loading Skeletons */}\n {loading && (\n <div className=\"site-kit-product-grid__grid\" style={{\n display: 'grid',\n gridTemplateColumns: gridColumns[columns],\n gap: '1.5rem',\n }}>\n {Array.from({ length: skeletonCount }).map((_, i) => (\n <div key={i} className=\"site-kit-product-grid__skeleton\" style={{\n aspectRatio: '1',\n backgroundColor: '#f3f4f6',\n borderRadius: '12px',\n animation: 'pulse 2s infinite',\n }} />\n ))}\n <style>{`\n @keyframes pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n }\n `}</style>\n </div>\n )}\n\n {/* Products Grid */}\n {!loading && filteredProducts.length > 0 && (\n <div className=\"site-kit-product-grid__grid\" style={{\n display: 'grid',\n gridTemplateColumns: gridColumns[columns],\n gap: '1.5rem',\n }}>\n {filteredProducts.map(product => (\n <OfferingCard\n key={product.id}\n offering={product}\n variant={cardVariant}\n showImage\n showPrice\n showDescription\n showCta\n ctaText=\"View Product\"\n onCtaClick={() => handleProductClick(product)}\n />\n ))}\n </div>\n )}\n\n {/* Empty State */}\n {!loading && filteredProducts.length === 0 && (\n <div className=\"site-kit-product-grid__empty\" style={{\n textAlign: 'center',\n padding: '4rem 2rem',\n backgroundColor: '#f9fafb',\n borderRadius: '12px',\n }}>\n <div style={{ fontSize: '3rem', marginBottom: '1rem' }}>🛍️</div>\n <p style={{ \n margin: 0, \n color: '#6b7280',\n fontSize: '1rem',\n }}>\n {searchQuery ? `No products match \"${searchQuery}\"` : emptyMessage}\n </p>\n {searchQuery && (\n <button\n onClick={() => setSearchQuery('')}\n style={{\n marginTop: '1rem',\n padding: '0.5rem 1rem',\n borderRadius: '6px',\n border: 'none',\n backgroundColor: '#2563eb',\n color: 'white',\n fontSize: '0.875rem',\n cursor: 'pointer',\n }}\n >\n Clear Search\n </button>\n )}\n </div>\n )}\n </div>\n )\n}\n","/**\n * @uptrade/site-kit/commerce - ProductPage\n * \n * Complete product page component with SEO metadata, breadcrumbs, and related products.\n * Use this as a drop-in for dynamic [slug] routes.\n */\n\n'use client'\n\nimport React, { useEffect, useState } from 'react'\nimport type { CommerceOffering, CommerceVariant, CheckoutResult } from './types'\nimport { ProductDetail } from './ProductDetail'\nimport { ProductGrid } from './ProductGrid'\nimport { fetchOffering, fetchOfferings } from './api'\n\nexport interface ProductPageProps {\n /** Pre-loaded product data (for SSR) */\n product?: CommerceOffering\n /** Product slug to fetch (if not pre-loaded) */\n slug?: string\n /** Show breadcrumbs navigation */\n showBreadcrumbs?: boolean\n /** Show related products section */\n showRelatedProducts?: boolean\n /** Number of related products to show */\n relatedProductsLimit?: number\n /** Show back to shop link */\n showBackLink?: boolean\n /** Base path for shop */\n shopBasePath?: string\n /** Success URL after checkout */\n successUrl?: string\n /** Cancel URL if checkout cancelled */\n cancelUrl?: string\n /** Callback when added to cart */\n onAddToCart?: (product: CommerceOffering, variant?: CommerceVariant, quantity?: number) => void\n /** Custom breadcrumb renderer */\n renderBreadcrumbs?: (product: CommerceOffering) => React.ReactNode\n /** Custom SEO head renderer (for Next.js Head or similar) */\n renderHead?: (product: CommerceOffering) => React.ReactNode\n /** Additional class names */\n className?: string\n /** Custom styles */\n style?: React.CSSProperties\n}\n\nexport function ProductPage({\n product: propProduct,\n slug,\n showBreadcrumbs = true,\n showRelatedProducts = true,\n relatedProductsLimit = 4,\n showBackLink = true,\n shopBasePath = '/shop',\n successUrl,\n cancelUrl,\n onAddToCart,\n renderBreadcrumbs,\n renderHead,\n className = '',\n style,\n}: ProductPageProps) {\n const [product, setProduct] = useState<CommerceOffering | null>(propProduct || null)\n const [relatedProducts, setRelatedProducts] = useState<CommerceOffering[]>([])\n const [loading, setLoading] = useState(!propProduct && !!slug)\n\n // Fetch product if not provided\n useEffect(() => {\n if (propProduct) {\n setProduct(propProduct)\n return\n }\n\n if (!slug) return\n\n async function load() {\n setLoading(true)\n try {\n const data = await fetchOffering(slug!)\n setProduct(data)\n } catch (e) {\n console.error('Failed to load product:', e)\n } finally {\n setLoading(false)\n }\n }\n\n load()\n }, [propProduct, slug])\n\n // Fetch related products\n useEffect(() => {\n if (!product || !showRelatedProducts) return\n\n async function loadRelated() {\n try {\n const data = await fetchOfferings({\n type: 'product',\n category: product?.category_id,\n limit: relatedProductsLimit + 1, // Fetch one extra to exclude current\n })\n // Exclude current product\n const filtered = data.filter(p => p.id !== product?.id).slice(0, relatedProductsLimit)\n setRelatedProducts(filtered)\n } catch (e) {\n console.error('Failed to load related products:', e)\n }\n }\n\n loadRelated()\n }, [product, showRelatedProducts, relatedProductsLimit])\n\n // Update document title for SEO\n useEffect(() => {\n if (product && typeof document !== 'undefined') {\n document.title = product.seo_title || `${product.name} | Shop`\n \n // Update meta description\n const metaDesc = document.querySelector('meta[name=\"description\"]')\n if (metaDesc && (product.seo_description || product.short_description)) {\n metaDesc.setAttribute('content', product.seo_description || product.short_description || '')\n }\n }\n }, [product])\n\n if (loading) {\n return (\n <div className={`site-kit-product-page site-kit-product-page--loading ${className}`} style={style}>\n <div style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minHeight: '60vh',\n }}>\n <div style={{\n width: '48px',\n height: '48px',\n border: '3px solid #e5e7eb',\n borderTopColor: '#2563eb',\n borderRadius: '50%',\n animation: 'spin 1s linear infinite',\n }} />\n </div>\n <style>{`@keyframes spin { to { transform: rotate(360deg); } }`}</style>\n </div>\n )\n }\n\n if (!product) {\n return (\n <div className={`site-kit-product-page site-kit-product-page--not-found ${className}`} style={style}>\n <div style={{\n textAlign: 'center',\n padding: '6rem 2rem',\n }}>\n <div style={{ fontSize: '4rem', marginBottom: '1rem' }}>🔍</div>\n <h1 style={{ margin: 0, fontSize: '2rem', color: '#111827' }}>Product Not Found</h1>\n <p style={{ marginTop: '0.75rem', color: '#6b7280' }}>\n The product you're looking for doesn't exist or has been removed.\n </p>\n <a\n href={shopBasePath}\n style={{\n display: 'inline-block',\n marginTop: '1.5rem',\n padding: '0.75rem 1.5rem',\n borderRadius: '8px',\n backgroundColor: '#2563eb',\n color: 'white',\n textDecoration: 'none',\n fontWeight: 600,\n }}\n >\n Back to Shop\n </a>\n </div>\n </div>\n )\n }\n\n // Default breadcrumbs\n const defaultBreadcrumbs = (\n <nav className=\"site-kit-product-page__breadcrumbs\" aria-label=\"Breadcrumb\" style={{\n marginBottom: '1.5rem',\n fontSize: '0.875rem',\n }}>\n <ol style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: '0.5rem',\n listStyle: 'none',\n margin: 0,\n padding: 0,\n }}>\n <li>\n <a href=\"/\" style={{ color: '#6b7280', textDecoration: 'none' }}>Home</a>\n </li>\n <li style={{ color: '#9ca3af' }}>/</li>\n <li>\n <a href={shopBasePath} style={{ color: '#6b7280', textDecoration: 'none' }}>Shop</a>\n </li>\n {product.category && (\n <>\n <li style={{ color: '#9ca3af' }}>/</li>\n <li>\n <a \n href={`${shopBasePath}?category=${product.category.id}`} \n style={{ color: '#6b7280', textDecoration: 'none' }}\n >\n {product.category.name}\n </a>\n </li>\n </>\n )}\n <li style={{ color: '#9ca3af' }}>/</li>\n <li style={{ color: '#111827', fontWeight: 500 }}>{product.name}</li>\n </ol>\n </nav>\n )\n\n return (\n <div className={`site-kit-product-page ${className}`} style={style}>\n {/* Custom head for SEO */}\n {renderHead?.(product)}\n\n {/* Back Link */}\n {showBackLink && (\n <div className=\"site-kit-product-page__back\" style={{ marginBottom: '1rem' }}>\n <a\n href={shopBasePath}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: '0.5rem',\n color: '#6b7280',\n textDecoration: 'none',\n fontSize: '0.875rem',\n }}\n >\n <span>←</span>\n <span>Back to Shop</span>\n </a>\n </div>\n )}\n\n {/* Breadcrumbs */}\n {showBreadcrumbs && (\n renderBreadcrumbs ? renderBreadcrumbs(product) : defaultBreadcrumbs\n )}\n\n {/* Product Detail */}\n <ProductDetail\n product={product}\n showAddToCart={!!onAddToCart}\n showBuyNow\n showQuantity\n showVariants\n showGallery\n showFeatures\n showSpecifications\n successUrl={successUrl}\n cancelUrl={cancelUrl}\n onAddToCart={onAddToCart}\n />\n\n {/* Related Products */}\n {showRelatedProducts && relatedProducts.length > 0 && (\n <section className=\"site-kit-product-page__related\" style={{ marginTop: '4rem' }}>\n <h2 style={{\n fontSize: '1.5rem',\n fontWeight: 600,\n color: '#111827',\n marginBottom: '1.5rem',\n }}>\n {product.category ? `More ${product.category.name}` : 'Related Products'}\n </h2>\n <ProductGrid\n products={relatedProducts}\n showSearch={false}\n showSort={false}\n showCategoryFilter={false}\n columns={4}\n productBasePath={shopBasePath}\n />\n </section>\n )}\n </div>\n )\n}\n","/**\n * @uptrade/site-kit/commerce - EventEmbed\n * \n * Embeddable widget for displaying an event on a homepage or landing page.\n * Great for featuring the next upcoming event.\n */\n\n'use client'\n\nimport React, { useEffect, useState } from 'react'\nimport type { EventEmbedProps, CommerceOffering } from './types'\nimport { EventTile } from './EventTile'\nimport { fetchOffering, fetchNextEvent } from './api'\n\nexport function EventEmbed({\n event: propEvent,\n slug,\n mode = 'next', // 'specific', 'next'\n category,\n variant = 'standard',\n showDate = true,\n showTime = true,\n showLocation = true,\n showCapacity = true,\n showPrice = true,\n showCta = true,\n ctaText,\n onRegister,\n onCtaClick,\n className = '',\n}: EventEmbedProps) {\n const [event, setEvent] = useState<CommerceOffering | null>(propEvent || null)\n const [loading, setLoading] = useState(!propEvent && (!!slug || mode === 'next'))\n \n useEffect(() => {\n if (propEvent) {\n setEvent(propEvent)\n return\n }\n \n async function load() {\n setLoading(true)\n try {\n let data: CommerceOffering | null = null\n \n if (mode === 'specific' && slug) {\n data = await fetchOffering(slug)\n } else if (mode === 'next') {\n data = await fetchNextEvent(category)\n }\n \n setEvent(data)\n } catch (e) {\n console.error('Failed to load event:', e)\n } finally {\n setLoading(false)\n }\n }\n \n load()\n }, [propEvent, slug, mode, category])\n \n if (loading) {\n return (\n <div className={`site-kit-event-embed ${className}`} style={{\n padding: '2rem',\n textAlign: 'center',\n background: '#f9fafb',\n borderRadius: '12px',\n }}>\n <div style={{\n width: '40px',\n height: '40px',\n margin: '0 auto',\n border: '3px solid #e5e7eb',\n borderTopColor: '#2563eb',\n borderRadius: '50%',\n animation: 'spin 1s linear infinite',\n }} />\n <style>{`\n @keyframes spin {\n to { transform: rotate(360deg); }\n }\n `}</style>\n </div>\n )\n }\n \n if (!event) {\n return null // Silent fail - don't show anything if no event\n }\n \n return (\n <div className={`site-kit-event-embed ${className}`}>\n <EventTile\n event={event}\n variant={variant}\n showDate={showDate}\n showTime={showTime}\n showLocation={showLocation}\n showCapacity={showCapacity}\n showPrice={showPrice}\n showCta={showCta}\n ctaText={ctaText}\n onRegister={onRegister}\n onCtaClick={onCtaClick}\n />\n </div>\n )\n}\n\nexport default EventEmbed\n","/**\n * @uptrade/site-kit/commerce - CheckoutForm\n * \n * Checkout/registration form for purchasing products or registering for events.\n */\n\n'use client'\n\nimport React, { useState } from 'react'\nimport type { CheckoutFormProps, CommerceOffering, CheckoutCustomer } from './types'\nimport { createCheckoutSession, registerForEvent } from './api'\nimport { formatPrice } from './utils'\n\nexport function CheckoutForm({\n offering,\n scheduleId,\n variantId,\n quantity: initialQuantity = 1,\n mode = 'checkout', // 'checkout' | 'register'\n showQuantity = true,\n submitText,\n onSuccess,\n onError,\n className = '',\n formClassName = '',\n inputClassName = '',\n buttonClassName = '',\n}: CheckoutFormProps) {\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [success, setSuccess] = useState(false)\n const [quantity, setQuantity] = useState(initialQuantity)\n \n const [customer, setCustomer] = useState<CheckoutCustomer>({\n email: '',\n name: '',\n phone: '',\n })\n \n const isEvent = offering.type === 'event' || offering.type === 'class'\n const isFree = !offering.price || offering.price === 0\n const actualMode = isEvent && isFree ? 'register' : mode\n \n const defaultSubmitText = actualMode === 'register' \n ? 'Register' \n : isFree \n ? 'Complete Order' \n : 'Continue to Payment'\n \n const total = offering.price ? offering.price * quantity : 0\n \n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault()\n setLoading(true)\n setError(null)\n \n try {\n if (actualMode === 'register' && isEvent && scheduleId) {\n // Free event registration\n const result = await registerForEvent(offering.id, scheduleId, customer)\n \n if (result.success) {\n setSuccess(true)\n onSuccess?.(result)\n } else {\n setError(result.error || 'Registration failed')\n onError?.(result.error || 'Registration failed')\n }\n } else {\n // Paid checkout - redirect to Stripe\n const result = await createCheckoutSession(offering.id, {\n variantId,\n scheduleId,\n quantity,\n customer,\n })\n \n if (result.success && result.payment_url) {\n // Redirect to payment\n window.location.href = result.payment_url\n } else {\n setError(result.error || 'Checkout failed')\n onError?.(result.error || 'Checkout failed')\n }\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : 'An error occurred'\n setError(message)\n onError?.(message)\n } finally {\n setLoading(false)\n }\n }\n \n const updateCustomer = (field: keyof CheckoutCustomer, value: string) => {\n setCustomer(prev => ({ ...prev, [field]: value }))\n }\n \n if (success) {\n return (\n <div className={`site-kit-checkout-success ${className}`} style={{\n padding: '2rem',\n textAlign: 'center',\n background: '#f0fdf4',\n borderRadius: '12px',\n border: '1px solid #bbf7d0',\n }}>\n <div style={{ fontSize: '3rem', marginBottom: '1rem' }}>🎉</div>\n <h3 style={{ margin: '0 0 0.5rem', color: '#166534' }}>\n {actualMode === 'register' ? 'Registration Complete!' : 'Order Confirmed!'}\n </h3>\n <p style={{ color: '#15803d', margin: 0 }}>\n {actualMode === 'register' \n ? `You're registered for ${offering.name}. Check your email for confirmation.`\n : `Thank you for your order! Check your email for details.`\n }\n </p>\n </div>\n )\n }\n \n return (\n <div className={`site-kit-checkout ${className}`}>\n <form onSubmit={handleSubmit} className={formClassName}>\n {/* Order Summary */}\n <div style={{\n padding: '1rem',\n background: '#f9fafb',\n borderRadius: '8px',\n marginBottom: '1.5rem',\n }}>\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'flex-start' }}>\n <div>\n <h4 style={{ margin: '0 0 0.25rem', fontSize: '1rem' }}>{offering.name}</h4>\n {offering.short_description && (\n <p style={{ margin: 0, fontSize: '0.875rem', color: '#666' }}>\n {offering.short_description}\n </p>\n )}\n </div>\n {offering.price_is_public && offering.price != null && (\n <div style={{ fontWeight: 600, fontSize: '1.125rem' }}>\n {offering.price === 0 ? 'Free' : formatPrice(offering.price, offering.currency)}\n </div>\n )}\n </div>\n \n {showQuantity && !isEvent && offering.price && offering.price > 0 && (\n <div style={{ marginTop: '1rem', display: 'flex', alignItems: 'center', gap: '0.5rem' }}>\n <label style={{ fontSize: '0.875rem', color: '#666' }}>Quantity:</label>\n <select\n value={quantity}\n onChange={(e) => setQuantity(Number(e.target.value))}\n className={inputClassName}\n style={{\n padding: '0.375rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n background: 'white',\n }}\n >\n {[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(n => (\n <option key={n} value={n}>{n}</option>\n ))}\n </select>\n <span style={{ marginLeft: 'auto', fontWeight: 600 }}>\n Total: {formatPrice(total, offering.currency)}\n </span>\n </div>\n )}\n </div>\n \n {/* Customer Info */}\n <div style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }}>\n <div>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>\n Full Name *\n </label>\n <input\n type=\"text\"\n required\n value={customer.name}\n onChange={(e) => updateCustomer('name', e.target.value)}\n className={inputClassName}\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n }}\n />\n </div>\n \n <div>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>\n Email Address *\n </label>\n <input\n type=\"email\"\n required\n value={customer.email}\n onChange={(e) => updateCustomer('email', e.target.value)}\n className={inputClassName}\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n }}\n />\n </div>\n \n <div>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>\n Phone Number\n </label>\n <input\n type=\"tel\"\n value={customer.phone || ''}\n onChange={(e) => updateCustomer('phone', e.target.value)}\n className={inputClassName}\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n }}\n />\n </div>\n </div>\n \n {error && (\n <div style={{\n marginTop: '1rem',\n padding: '0.75rem',\n background: '#fef2f2',\n border: '1px solid #fecaca',\n borderRadius: '6px',\n color: '#dc2626',\n fontSize: '0.875rem',\n }}>\n {error}\n </div>\n )}\n \n <button\n type=\"submit\"\n disabled={loading}\n className={buttonClassName}\n style={{\n width: '100%',\n marginTop: '1.5rem',\n padding: '0.875rem',\n fontSize: '1rem',\n fontWeight: 600,\n borderRadius: '8px',\n border: 'none',\n background: loading ? '#93c5fd' : '#2563eb',\n color: 'white',\n cursor: loading ? 'not-allowed' : 'pointer',\n }}\n >\n {loading ? 'Processing...' : (submitText || defaultSubmitText)}\n </button>\n \n {!isFree && (\n <p style={{ \n textAlign: 'center', \n fontSize: '0.75rem', \n color: '#666',\n marginTop: '0.75rem',\n }}>\n You'll be redirected to our secure payment page\n </p>\n )}\n </form>\n </div>\n )\n}\n\nexport default CheckoutForm\n","/**\n * @uptrade/site-kit/commerce - RegistrationForm\n * \n * Simplified registration form for free events/classes.\n */\n\n'use client'\n\nimport React, { useState } from 'react'\nimport type { RegistrationFormProps, CheckoutCustomer } from './types'\nimport { registerForEvent } from './api'\n\nexport function RegistrationForm({\n event,\n scheduleId,\n title = 'Register for Event',\n submitText = 'Register',\n successMessage,\n collectPhone = false,\n additionalFields = [],\n onSuccess,\n onError,\n className = '',\n formClassName = '',\n inputClassName = '',\n buttonClassName = '',\n}: RegistrationFormProps) {\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [success, setSuccess] = useState(false)\n \n const [customer, setCustomer] = useState<CheckoutCustomer>({\n email: '',\n name: '',\n phone: '',\n })\n \n const [additionalData, setAdditionalData] = useState<Record<string, string>>({})\n \n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault()\n setLoading(true)\n setError(null)\n \n try {\n const result = await registerForEvent(event.id, scheduleId, {\n ...customer,\n ...additionalData,\n })\n \n if (result.success) {\n setSuccess(true)\n onSuccess?.(result)\n } else {\n setError(result.error || 'Registration failed')\n onError?.(result.error || 'Registration failed')\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : 'An error occurred'\n setError(message)\n onError?.(message)\n } finally {\n setLoading(false)\n }\n }\n \n if (success) {\n return (\n <div className={`site-kit-registration-success ${className}`} style={{\n padding: '2rem',\n textAlign: 'center',\n background: '#f0fdf4',\n borderRadius: '12px',\n border: '1px solid #bbf7d0',\n }}>\n <div style={{ fontSize: '3rem', marginBottom: '1rem' }}>🎉</div>\n <h3 style={{ margin: '0 0 0.5rem', color: '#166534' }}>\n You're Registered!\n </h3>\n <p style={{ color: '#15803d', margin: 0 }}>\n {successMessage || `You've been registered for ${event.name}. Check your email for confirmation.`}\n </p>\n </div>\n )\n }\n \n return (\n <div className={`site-kit-registration ${className}`}>\n {title && (\n <h3 style={{ margin: '0 0 1.5rem', fontSize: '1.25rem', fontWeight: 600 }}>\n {title}\n </h3>\n )}\n \n <form onSubmit={handleSubmit} className={formClassName}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }}>\n <div>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>\n Full Name *\n </label>\n <input\n type=\"text\"\n required\n value={customer.name}\n onChange={(e) => setCustomer(prev => ({ ...prev, name: e.target.value }))}\n className={inputClassName}\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n }}\n />\n </div>\n \n <div>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>\n Email Address *\n </label>\n <input\n type=\"email\"\n required\n value={customer.email}\n onChange={(e) => setCustomer(prev => ({ ...prev, email: e.target.value }))}\n className={inputClassName}\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n }}\n />\n </div>\n \n {collectPhone && (\n <div>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>\n Phone Number\n </label>\n <input\n type=\"tel\"\n value={customer.phone || ''}\n onChange={(e) => setCustomer(prev => ({ ...prev, phone: e.target.value }))}\n className={inputClassName}\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n }}\n />\n </div>\n )}\n \n {additionalFields.map(field => (\n <div key={field.name}>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>\n {field.label} {field.required && '*'}\n </label>\n {field.type === 'textarea' ? (\n <textarea\n required={field.required}\n placeholder={field.placeholder}\n value={additionalData[field.name] || ''}\n onChange={(e) => setAdditionalData(prev => ({ ...prev, [field.name]: e.target.value }))}\n className={inputClassName}\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n minHeight: '80px',\n }}\n />\n ) : field.type === 'select' && field.options ? (\n <select\n required={field.required}\n value={additionalData[field.name] || ''}\n onChange={(e) => setAdditionalData(prev => ({ ...prev, [field.name]: e.target.value }))}\n className={inputClassName}\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n background: 'white',\n }}\n >\n <option value=\"\">Select...</option>\n {field.options.map(opt => (\n <option key={opt.value} value={opt.value}>{opt.label}</option>\n ))}\n </select>\n ) : (\n <input\n type={field.type || 'text'}\n required={field.required}\n placeholder={field.placeholder}\n value={additionalData[field.name] || ''}\n onChange={(e) => setAdditionalData(prev => ({ ...prev, [field.name]: e.target.value }))}\n className={inputClassName}\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n }}\n />\n )}\n </div>\n ))}\n </div>\n \n {error && (\n <div style={{\n marginTop: '1rem',\n padding: '0.75rem',\n background: '#fef2f2',\n border: '1px solid #fecaca',\n borderRadius: '6px',\n color: '#dc2626',\n fontSize: '0.875rem',\n }}>\n {error}\n </div>\n )}\n \n <button\n type=\"submit\"\n disabled={loading}\n className={buttonClassName}\n style={{\n width: '100%',\n marginTop: '1.5rem',\n padding: '0.875rem',\n fontSize: '1rem',\n fontWeight: 600,\n borderRadius: '8px',\n border: 'none',\n background: loading ? '#93c5fd' : '#2563eb',\n color: 'white',\n cursor: loading ? 'not-allowed' : 'pointer',\n }}\n >\n {loading ? 'Registering...' : submitText}\n </button>\n </form>\n </div>\n )\n}\n\nexport default RegistrationForm\n","/**\n * @uptrade/site-kit/commerce - CalendarView\n * \n * Monthly calendar view for displaying events.\n */\n\n'use client'\n\nimport React, { useEffect, useState, useMemo } from 'react'\nimport type { CommerceOffering, CommerceSchedule } from './types'\nimport { fetchUpcomingEvents } from './api'\nimport { formatTime } from './utils'\n\nexport interface CalendarViewProps {\n /** Pre-loaded events (optional - will fetch if not provided) */\n events?: CommerceOffering[]\n /** Initial month to display (defaults to current) */\n initialDate?: Date\n /** Category filter */\n category?: string\n /** Callback when event is clicked */\n onEventClick?: (event: CommerceOffering, schedule: CommerceSchedule) => void\n /** Callback when day is clicked */\n onDayClick?: (date: Date, events: EventOnDay[]) => void\n /** Show navigation arrows */\n showNavigation?: boolean\n /** Show month/year header */\n showHeader?: boolean\n /** First day of week (0 = Sunday, 1 = Monday) */\n weekStartsOn?: 0 | 1\n /** Minimum date to show */\n minDate?: Date\n /** Maximum date to show */\n maxDate?: Date\n /** Custom class names */\n className?: string\n headerClassName?: string\n dayClassName?: string\n eventClassName?: string\n todayClassName?: string\n}\n\nexport interface EventOnDay {\n event: CommerceOffering\n schedule: CommerceSchedule\n}\n\ninterface DayData {\n date: Date\n isCurrentMonth: boolean\n isToday: boolean\n events: EventOnDay[]\n}\n\nconst DAYS_SHORT = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\nconst MONTHS = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December'\n]\n\nexport function CalendarView({\n events: propEvents,\n initialDate,\n category,\n onEventClick,\n onDayClick,\n showNavigation = true,\n showHeader = true,\n weekStartsOn = 0,\n minDate,\n maxDate,\n className = '',\n headerClassName = '',\n dayClassName = '',\n eventClassName = '',\n todayClassName = '',\n}: CalendarViewProps) {\n const [currentDate, setCurrentDate] = useState(initialDate || new Date())\n const [events, setEvents] = useState<CommerceOffering[]>(propEvents || [])\n const [loading, setLoading] = useState(!propEvents)\n \n // Fetch events if not provided\n useEffect(() => {\n if (propEvents) {\n setEvents(propEvents)\n return\n }\n \n async function load() {\n setLoading(true)\n try {\n // Fetch events for a reasonable range (6 months)\n const data = await fetchUpcomingEvents({ limit: 100, category })\n setEvents(data)\n } catch (e) {\n console.error('Failed to load events:', e)\n } finally {\n setLoading(false)\n }\n }\n \n load()\n }, [propEvents, category])\n \n // Build calendar grid\n const calendarDays = useMemo(() => {\n const year = currentDate.getFullYear()\n const month = currentDate.getMonth()\n \n // First day of the month\n const firstDay = new Date(year, month, 1)\n // Last day of the month\n const lastDay = new Date(year, month + 1, 0)\n \n // Start from the first day of the week containing the first of the month\n const startDate = new Date(firstDay)\n const dayOfWeek = startDate.getDay()\n const daysToSubtract = (dayOfWeek - weekStartsOn + 7) % 7\n startDate.setDate(startDate.getDate() - daysToSubtract)\n \n // End on the last day of the week containing the last of the month\n const endDate = new Date(lastDay)\n const endDayOfWeek = endDate.getDay()\n const daysToAdd = (6 - endDayOfWeek + weekStartsOn) % 7\n endDate.setDate(endDate.getDate() + daysToAdd)\n \n // Build event lookup by date\n const eventsByDate = new Map<string, EventOnDay[]>()\n \n events.forEach(event => {\n const schedules = event.schedules || []\n schedules.forEach(schedule => {\n const scheduleDate = new Date(schedule.starts_at)\n const dateKey = `${scheduleDate.getFullYear()}-${scheduleDate.getMonth()}-${scheduleDate.getDate()}`\n \n if (!eventsByDate.has(dateKey)) {\n eventsByDate.set(dateKey, [])\n }\n eventsByDate.get(dateKey)!.push({ event, schedule })\n })\n })\n \n // Generate days\n const days: DayData[] = []\n const today = new Date()\n const todayKey = `${today.getFullYear()}-${today.getMonth()}-${today.getDate()}`\n \n const current = new Date(startDate)\n while (current <= endDate) {\n const dateKey = `${current.getFullYear()}-${current.getMonth()}-${current.getDate()}`\n \n days.push({\n date: new Date(current),\n isCurrentMonth: current.getMonth() === month,\n isToday: dateKey === todayKey,\n events: eventsByDate.get(dateKey) || [],\n })\n \n current.setDate(current.getDate() + 1)\n }\n \n return days\n }, [currentDate, events, weekStartsOn])\n \n // Navigation\n const goToPreviousMonth = () => {\n const newDate = new Date(currentDate)\n newDate.setMonth(newDate.getMonth() - 1)\n if (!minDate || newDate >= minDate) {\n setCurrentDate(newDate)\n }\n }\n \n const goToNextMonth = () => {\n const newDate = new Date(currentDate)\n newDate.setMonth(newDate.getMonth() + 1)\n if (!maxDate || newDate <= maxDate) {\n setCurrentDate(newDate)\n }\n }\n \n const goToToday = () => {\n setCurrentDate(new Date())\n }\n \n // Day headers adjusted for week start\n const dayHeaders = weekStartsOn === 1\n ? [...DAYS_SHORT.slice(1), DAYS_SHORT[0]]\n : DAYS_SHORT\n \n const handleEventClick = (e: React.MouseEvent, event: CommerceOffering, schedule: CommerceSchedule) => {\n e.stopPropagation()\n if (onEventClick) {\n onEventClick(event, schedule)\n } else {\n window.location.href = `/events/${event.slug}`\n }\n }\n \n const handleDayClick = (day: DayData) => {\n if (onDayClick) {\n onDayClick(day.date, day.events)\n }\n }\n \n return (\n <div className={`site-kit-calendar ${className}`} style={{\n background: 'white',\n borderRadius: '12px',\n overflow: 'hidden',\n boxShadow: '0 1px 3px rgba(0,0,0,0.1)',\n }}>\n {/* Header */}\n {showHeader && (\n <div \n className={`site-kit-calendar-header ${headerClassName}`}\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '1rem 1.25rem',\n borderBottom: '1px solid #e5e7eb',\n }}\n >\n {showNavigation && (\n <button\n onClick={goToPreviousMonth}\n style={{\n padding: '0.5rem',\n border: 'none',\n background: '#f3f4f6',\n borderRadius: '6px',\n cursor: 'pointer',\n fontSize: '1.25rem',\n lineHeight: 1,\n }}\n aria-label=\"Previous month\"\n >\n ←\n </button>\n )}\n \n <div style={{ textAlign: 'center' }}>\n <h2 style={{ margin: 0, fontSize: '1.25rem', fontWeight: 600 }}>\n {MONTHS[currentDate.getMonth()]} {currentDate.getFullYear()}\n </h2>\n {showNavigation && (\n <button\n onClick={goToToday}\n style={{\n marginTop: '0.25rem',\n padding: '0.25rem 0.5rem',\n fontSize: '0.75rem',\n border: 'none',\n background: 'transparent',\n color: '#2563eb',\n cursor: 'pointer',\n }}\n >\n Today\n </button>\n )}\n </div>\n \n {showNavigation && (\n <button\n onClick={goToNextMonth}\n style={{\n padding: '0.5rem',\n border: 'none',\n background: '#f3f4f6',\n borderRadius: '6px',\n cursor: 'pointer',\n fontSize: '1.25rem',\n lineHeight: 1,\n }}\n aria-label=\"Next month\"\n >\n →\n </button>\n )}\n </div>\n )}\n \n {/* Day headers */}\n <div style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(7, 1fr)',\n borderBottom: '1px solid #e5e7eb',\n }}>\n {dayHeaders.map(day => (\n <div\n key={day}\n style={{\n padding: '0.75rem 0.5rem',\n textAlign: 'center',\n fontSize: '0.75rem',\n fontWeight: 600,\n color: '#666',\n textTransform: 'uppercase',\n }}\n >\n {day}\n </div>\n ))}\n </div>\n \n {/* Calendar grid */}\n <div style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(7, 1fr)',\n }}>\n {calendarDays.map((day, index) => (\n <div\n key={index}\n onClick={() => handleDayClick(day)}\n className={`site-kit-calendar-day ${dayClassName} ${day.isToday ? `site-kit-calendar-today ${todayClassName}` : ''}`}\n style={{\n minHeight: '100px',\n padding: '0.5rem',\n borderRight: (index + 1) % 7 !== 0 ? '1px solid #e5e7eb' : 'none',\n borderBottom: '1px solid #e5e7eb',\n background: day.isCurrentMonth ? 'white' : '#f9fafb',\n cursor: day.events.length > 0 || onDayClick ? 'pointer' : 'default',\n }}\n >\n <div style={{\n display: 'flex',\n justifyContent: 'flex-end',\n marginBottom: '0.25rem',\n }}>\n <span style={{\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '28px',\n height: '28px',\n borderRadius: '50%',\n fontSize: '0.875rem',\n fontWeight: day.isToday ? 600 : 400,\n color: day.isToday ? 'white' : (day.isCurrentMonth ? '#111' : '#9ca3af'),\n background: day.isToday ? '#2563eb' : 'transparent',\n }}>\n {day.date.getDate()}\n </span>\n </div>\n \n {/* Events */}\n <div style={{ display: 'flex', flexDirection: 'column', gap: '2px' }}>\n {day.events.slice(0, 3).map((item, eventIndex) => (\n <button\n key={`${item.event.id}-${item.schedule.id}`}\n onClick={(e) => handleEventClick(e, item.event, item.schedule)}\n className={`site-kit-calendar-event ${eventClassName}`}\n style={{\n display: 'block',\n width: '100%',\n padding: '2px 4px',\n fontSize: '0.7rem',\n fontWeight: 500,\n textAlign: 'left',\n border: 'none',\n borderRadius: '3px',\n background: '#dbeafe',\n color: '#1d4ed8',\n cursor: 'pointer',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n }}\n title={`${item.event.name} - ${formatTime(item.schedule.starts_at)}`}\n >\n {item.event.name}\n </button>\n ))}\n {day.events.length > 3 && (\n <span style={{\n fontSize: '0.65rem',\n color: '#666',\n textAlign: 'center',\n }}>\n +{day.events.length - 3} more\n </span>\n )}\n </div>\n </div>\n ))}\n </div>\n \n {loading && (\n <div style={{\n position: 'absolute',\n inset: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: 'rgba(255,255,255,0.8)',\n }}>\n Loading...\n </div>\n )}\n </div>\n )\n}\n\nexport default CalendarView\n","/**\n * @uptrade/site-kit/commerce - EventModal\n * \n * Modal popup for event registration and checkout.\n * Handles both free registration and paid tickets via Stripe/Square.\n */\n\n'use client'\n\nimport React, { useState, useEffect, useCallback } from 'react'\nimport type { CommerceOffering, CommerceSchedule, CheckoutCustomer, CheckoutResult } from './types'\nimport { registerForEvent, createCheckoutSession } from './api'\nimport { formatDate, formatTime, formatPrice, getSpotsRemaining, isEventSoldOut } from './utils'\n\nexport interface EventModalProps {\n /** Event to display */\n event: CommerceOffering | null\n /** Specific schedule (optional - uses first upcoming if not provided) */\n schedule?: CommerceSchedule | null\n /** Whether modal is open */\n isOpen: boolean\n /** Close modal callback */\n onClose: () => void\n /** Success callback */\n onSuccess?: (result: CheckoutResult) => void\n /** Error callback */\n onError?: (error: string) => void\n /** Collect phone number */\n collectPhone?: boolean\n /** Additional form fields */\n additionalFields?: AdditionalField[]\n /** Custom class names */\n className?: string\n overlayClassName?: string\n contentClassName?: string\n}\n\nexport interface AdditionalField {\n name: string\n label: string\n type?: 'text' | 'email' | 'tel' | 'textarea' | 'select' | 'number'\n required?: boolean\n placeholder?: string\n options?: { value: string; label: string }[]\n}\n\nexport function EventModal({\n event,\n schedule: propSchedule,\n isOpen,\n onClose,\n onSuccess,\n onError,\n collectPhone = false,\n additionalFields = [],\n className = '',\n overlayClassName = '',\n contentClassName = '',\n}: EventModalProps) {\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [success, setSuccess] = useState(false)\n const [quantity, setQuantity] = useState(1)\n \n const [customer, setCustomer] = useState<CheckoutCustomer>({\n email: '',\n name: '',\n phone: '',\n })\n \n const [additionalData, setAdditionalData] = useState<Record<string, string>>({})\n \n // Get schedule\n const schedule = propSchedule || event?.schedules?.[0] || (event as any)?.next_schedule\n \n // Reset state when modal opens with new event\n useEffect(() => {\n if (isOpen && event) {\n setError(null)\n setSuccess(false)\n setQuantity(1)\n setCustomer({ email: '', name: '', phone: '' })\n setAdditionalData({})\n }\n }, [isOpen, event?.id])\n \n // Handle escape key\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && isOpen) {\n onClose()\n }\n }\n \n document.addEventListener('keydown', handleEscape)\n return () => document.removeEventListener('keydown', handleEscape)\n }, [isOpen, onClose])\n \n // Prevent body scroll when open\n useEffect(() => {\n if (isOpen) {\n document.body.style.overflow = 'hidden'\n } else {\n document.body.style.overflow = ''\n }\n return () => {\n document.body.style.overflow = ''\n }\n }, [isOpen])\n \n const handleOverlayClick = useCallback((e: React.MouseEvent) => {\n if (e.target === e.currentTarget) {\n onClose()\n }\n }, [onClose])\n \n if (!isOpen || !event) return null\n \n const isFree = !event.price || event.price === 0\n const soldOut = schedule ? isEventSoldOut(schedule.capacity, schedule.current_registrations) : false\n const spotsRemaining = schedule ? getSpotsRemaining(schedule.capacity, schedule.current_registrations) : null\n const total = event.price ? event.price * quantity : 0\n \n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault()\n \n if (!schedule) {\n setError('No schedule available for this event')\n return\n }\n \n setLoading(true)\n setError(null)\n \n try {\n if (isFree) {\n // Free event registration\n const result = await registerForEvent(event.id, schedule.id, {\n ...customer,\n ...additionalData,\n })\n \n if (result.success) {\n setSuccess(true)\n onSuccess?.(result)\n } else {\n setError(result.error || 'Registration failed')\n onError?.(result.error || 'Registration failed')\n }\n } else {\n // Paid checkout - redirect to Stripe/Square\n const result = await createCheckoutSession(event.id, {\n scheduleId: schedule.id,\n quantity,\n customer: {\n ...customer,\n ...additionalData,\n },\n successUrl: window.location.href + '?registration=success',\n cancelUrl: window.location.href,\n })\n \n if (result.success && result.payment_url) {\n // Redirect to payment\n window.location.href = result.payment_url\n } else {\n setError(result.error || 'Checkout failed')\n onError?.(result.error || 'Checkout failed')\n }\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : 'An error occurred'\n setError(message)\n onError?.(message)\n } finally {\n setLoading(false)\n }\n }\n \n const updateCustomer = (field: keyof CheckoutCustomer, value: string) => {\n setCustomer(prev => ({ ...prev, [field]: value }))\n }\n \n return (\n <div\n className={`site-kit-modal-overlay ${overlayClassName}`}\n onClick={handleOverlayClick}\n style={{\n position: 'fixed',\n inset: 0,\n zIndex: 9999,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '1rem',\n background: 'rgba(0, 0, 0, 0.5)',\n backdropFilter: 'blur(4px)',\n }}\n >\n <div\n className={`site-kit-modal ${className}`}\n style={{\n position: 'relative',\n width: '100%',\n maxWidth: '500px',\n maxHeight: '90vh',\n overflow: 'auto',\n background: 'white',\n borderRadius: '16px',\n boxShadow: '0 25px 50px -12px rgba(0, 0, 0, 0.25)',\n }}\n onClick={e => e.stopPropagation()}\n >\n {/* Close button */}\n <button\n onClick={onClose}\n style={{\n position: 'absolute',\n top: '1rem',\n right: '1rem',\n padding: '0.5rem',\n border: 'none',\n background: '#f3f4f6',\n borderRadius: '50%',\n cursor: 'pointer',\n fontSize: '1.25rem',\n lineHeight: 1,\n width: '36px',\n height: '36px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 10,\n }}\n aria-label=\"Close\"\n >\n ×\n </button>\n \n {/* Event header */}\n {event.featured_image_url && (\n <div style={{ position: 'relative' }}>\n <img\n src={event.featured_image_url}\n alt={event.name}\n style={{\n width: '100%',\n height: '180px',\n objectFit: 'cover',\n borderRadius: '16px 16px 0 0',\n }}\n />\n {soldOut && (\n <div style={{\n position: 'absolute',\n top: '1rem',\n left: '1rem',\n background: '#ef4444',\n color: 'white',\n padding: '0.25rem 0.75rem',\n borderRadius: '4px',\n fontSize: '0.875rem',\n fontWeight: 600,\n }}>\n Sold Out\n </div>\n )}\n </div>\n )}\n \n <div className={`site-kit-modal-content ${contentClassName}`} style={{ padding: '1.5rem' }}>\n {/* Success state */}\n {success ? (\n <div style={{ textAlign: 'center', padding: '2rem 0' }}>\n <div style={{ fontSize: '4rem', marginBottom: '1rem' }}>🎉</div>\n <h2 style={{ margin: '0 0 0.5rem', color: '#166534' }}>\n You're Registered!\n </h2>\n <p style={{ color: '#15803d', margin: '0 0 1.5rem' }}>\n Check your email for confirmation details.\n </p>\n <button\n onClick={onClose}\n style={{\n padding: '0.75rem 2rem',\n fontSize: '1rem',\n fontWeight: 500,\n border: 'none',\n borderRadius: '8px',\n background: '#2563eb',\n color: 'white',\n cursor: 'pointer',\n }}\n >\n Done\n </button>\n </div>\n ) : (\n <>\n {/* Event info */}\n <div style={{ marginBottom: '1.5rem' }}>\n <h2 style={{ margin: '0 0 0.5rem', fontSize: '1.5rem', fontWeight: 600, paddingRight: '2rem' }}>\n {event.name}\n </h2>\n \n {schedule && (\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: '1rem', color: '#666', fontSize: '0.9rem' }}>\n <span>📅 {formatDate(schedule.starts_at)}</span>\n <span>🕐 {formatTime(schedule.starts_at)}</span>\n {event.location && <span>📍 {event.location}</span>}\n </div>\n )}\n \n {event.short_description && (\n <p style={{ margin: '0.75rem 0 0', color: '#666', fontSize: '0.9rem' }}>\n {event.short_description}\n </p>\n )}\n \n {/* Capacity warning */}\n {spotsRemaining !== null && spotsRemaining <= 10 && spotsRemaining > 0 && (\n <div style={{\n marginTop: '0.75rem',\n padding: '0.5rem 0.75rem',\n background: '#fef3c7',\n borderRadius: '6px',\n color: '#92400e',\n fontSize: '0.875rem',\n }}>\n ⚠️ Only {spotsRemaining} spot{spotsRemaining > 1 ? 's' : ''} remaining!\n </div>\n )}\n </div>\n \n {soldOut ? (\n <div style={{\n padding: '2rem',\n textAlign: 'center',\n background: '#f3f4f6',\n borderRadius: '8px',\n }}>\n <p style={{ margin: 0, color: '#666' }}>\n This event is sold out. Check back for future dates!\n </p>\n </div>\n ) : (\n <form onSubmit={handleSubmit}>\n {/* Price / Quantity */}\n {!isFree && event.price_is_public && (\n <div style={{\n padding: '1rem',\n background: '#f9fafb',\n borderRadius: '8px',\n marginBottom: '1rem',\n }}>\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>\n <div>\n <span style={{ fontWeight: 600, fontSize: '1.25rem' }}>\n {formatPrice(event.price!, event.currency)}\n </span>\n <span style={{ color: '#666', fontSize: '0.875rem' }}> per ticket</span>\n </div>\n \n <div style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}>\n <label style={{ fontSize: '0.875rem', color: '#666' }}>Qty:</label>\n <select\n value={quantity}\n onChange={(e) => setQuantity(Number(e.target.value))}\n style={{\n padding: '0.5rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n background: 'white',\n fontSize: '1rem',\n }}\n >\n {[...Array(Math.min(10, spotsRemaining || 10))].map((_, i) => (\n <option key={i + 1} value={i + 1}>{i + 1}</option>\n ))}\n </select>\n </div>\n </div>\n \n {quantity > 1 && (\n <div style={{ \n marginTop: '0.75rem', \n paddingTop: '0.75rem', \n borderTop: '1px solid #e5e7eb',\n display: 'flex',\n justifyContent: 'space-between',\n }}>\n <span style={{ fontWeight: 500 }}>Total</span>\n <span style={{ fontWeight: 600, fontSize: '1.125rem' }}>\n {formatPrice(total, event.currency)}\n </span>\n </div>\n )}\n </div>\n )}\n \n {/* Customer info */}\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.875rem' }}>\n <div>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>\n Full Name *\n </label>\n <input\n type=\"text\"\n required\n value={customer.name}\n onChange={(e) => updateCustomer('name', e.target.value)}\n placeholder=\"John Smith\"\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n }}\n />\n </div>\n \n <div>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>\n Email Address *\n </label>\n <input\n type=\"email\"\n required\n value={customer.email}\n onChange={(e) => updateCustomer('email', e.target.value)}\n placeholder=\"john@example.com\"\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n }}\n />\n </div>\n \n {collectPhone && (\n <div>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>\n Phone Number\n </label>\n <input\n type=\"tel\"\n value={customer.phone || ''}\n onChange={(e) => updateCustomer('phone', e.target.value)}\n placeholder=\"(555) 123-4567\"\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n }}\n />\n </div>\n )}\n \n {/* Additional fields */}\n {additionalFields.map(field => (\n <div key={field.name}>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>\n {field.label} {field.required && '*'}\n </label>\n {field.type === 'textarea' ? (\n <textarea\n required={field.required}\n placeholder={field.placeholder}\n value={additionalData[field.name] || ''}\n onChange={(e) => setAdditionalData(prev => ({ ...prev, [field.name]: e.target.value }))}\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n minHeight: '80px',\n resize: 'vertical',\n }}\n />\n ) : field.type === 'select' && field.options ? (\n <select\n required={field.required}\n value={additionalData[field.name] || ''}\n onChange={(e) => setAdditionalData(prev => ({ ...prev, [field.name]: e.target.value }))}\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n background: 'white',\n }}\n >\n <option value=\"\">Select...</option>\n {field.options.map(opt => (\n <option key={opt.value} value={opt.value}>{opt.label}</option>\n ))}\n </select>\n ) : (\n <input\n type={field.type || 'text'}\n required={field.required}\n placeholder={field.placeholder}\n value={additionalData[field.name] || ''}\n onChange={(e) => setAdditionalData(prev => ({ ...prev, [field.name]: e.target.value }))}\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n }}\n />\n )}\n </div>\n ))}\n </div>\n \n {error && (\n <div style={{\n marginTop: '1rem',\n padding: '0.75rem',\n background: '#fef2f2',\n border: '1px solid #fecaca',\n borderRadius: '6px',\n color: '#dc2626',\n fontSize: '0.875rem',\n }}>\n {error}\n </div>\n )}\n \n <button\n type=\"submit\"\n disabled={loading}\n style={{\n width: '100%',\n marginTop: '1.25rem',\n padding: '0.875rem',\n fontSize: '1rem',\n fontWeight: 600,\n borderRadius: '8px',\n border: 'none',\n background: loading ? '#93c5fd' : '#2563eb',\n color: 'white',\n cursor: loading ? 'not-allowed' : 'pointer',\n }}\n >\n {loading ? 'Processing...' : (\n isFree ? 'Register Free' : `Pay ${formatPrice(total, event.currency)}`\n )}\n </button>\n \n {!isFree && (\n <p style={{ \n textAlign: 'center', \n fontSize: '0.75rem', \n color: '#666',\n margin: '0.75rem 0 0',\n }}>\n 🔒 Secure checkout via Stripe\n </p>\n )}\n </form>\n )}\n </>\n )}\n </div>\n </div>\n </div>\n )\n}\n\nexport default EventModal\n","/**\n * @uptrade/site-kit/commerce - useEventModal hook\n * \n * Hook for managing event modal state.\n */\n\n'use client'\n\nimport { useState, useCallback } from 'react'\nimport type { CommerceOffering, CommerceSchedule } from './types'\n\nexport interface UseEventModalReturn {\n /** Currently selected event */\n event: CommerceOffering | null\n /** Currently selected schedule */\n schedule: CommerceSchedule | null\n /** Whether modal is open */\n isOpen: boolean\n /** Open modal with event */\n openModal: (event: CommerceOffering, schedule?: CommerceSchedule) => void\n /** Close modal */\n closeModal: () => void\n}\n\nexport function useEventModal(): UseEventModalReturn {\n const [event, setEvent] = useState<CommerceOffering | null>(null)\n const [schedule, setSchedule] = useState<CommerceSchedule | null>(null)\n const [isOpen, setIsOpen] = useState(false)\n \n const openModal = useCallback((newEvent: CommerceOffering, newSchedule?: CommerceSchedule) => {\n setEvent(newEvent)\n setSchedule(newSchedule || newEvent.schedules?.[0] || null)\n setIsOpen(true)\n }, [])\n \n const closeModal = useCallback(() => {\n setIsOpen(false)\n // Delay clearing event data for exit animation\n setTimeout(() => {\n setEvent(null)\n setSchedule(null)\n }, 200)\n }, [])\n \n return {\n event,\n schedule,\n isOpen,\n openModal,\n closeModal,\n }\n}\n\nexport default useEventModal\n","/**\n * @uptrade/site-kit/commerce - EventCalendar\n * \n * Calendar view with built-in registration modal.\n * Clicking an event opens a popup for registration/checkout.\n */\n\n'use client'\n\nimport React from 'react'\nimport type { CommerceOffering, CommerceSchedule, CheckoutResult } from './types'\nimport type { CalendarViewProps } from './CalendarView'\nimport type { AdditionalField } from './EventModal'\nimport { CalendarView } from './CalendarView'\nimport { EventModal } from './EventModal'\nimport { useEventModal } from './useEventModal'\n\nexport interface EventCalendarProps extends Omit<CalendarViewProps, 'onEventClick'> {\n /** Callback when registration/checkout succeeds */\n onRegistrationSuccess?: (result: CheckoutResult) => void\n /** Callback when registration/checkout fails */\n onRegistrationError?: (error: string) => void\n /** Collect phone number in registration form */\n collectPhone?: boolean\n /** Additional form fields for registration */\n additionalFields?: AdditionalField[]\n /** Custom modal class names */\n modalClassName?: string\n modalOverlayClassName?: string\n modalContentClassName?: string\n}\n\nexport function EventCalendar({\n onRegistrationSuccess,\n onRegistrationError,\n collectPhone = false,\n additionalFields = [],\n modalClassName,\n modalOverlayClassName,\n modalContentClassName,\n ...calendarProps\n}: EventCalendarProps) {\n const { event, schedule, isOpen, openModal, closeModal } = useEventModal()\n \n const handleEventClick = (clickedEvent: CommerceOffering, clickedSchedule: CommerceSchedule) => {\n openModal(clickedEvent, clickedSchedule)\n }\n \n const handleSuccess = (result: CheckoutResult) => {\n onRegistrationSuccess?.(result)\n // Keep modal open to show success state\n }\n \n const handleError = (error: string) => {\n onRegistrationError?.(error)\n }\n \n return (\n <>\n <CalendarView\n {...calendarProps}\n onEventClick={handleEventClick}\n />\n \n <EventModal\n event={event}\n schedule={schedule}\n isOpen={isOpen}\n onClose={closeModal}\n onSuccess={handleSuccess}\n onError={handleError}\n collectPhone={collectPhone}\n additionalFields={additionalFields}\n className={modalClassName}\n overlayClassName={modalOverlayClassName}\n contentClassName={modalContentClassName}\n />\n </>\n )\n}\n\nexport default EventCalendar\n","/**\n * @uptrade/site-kit/commerce - EventsWidget\n * \n * Comprehensive events widget with calendar/list toggle and integrated booking.\n * Plug-and-play component for displaying commerce events.\n * \n * @example\n * ```tsx\n * // Basic usage - automatically fetches events\n * <EventsWidget />\n * \n * // With calendar view as default\n * <EventsWidget defaultView=\"calendar\" />\n * \n * // Custom styling\n * <EventsWidget\n * className=\"my-events-section\"\n * title=\"Upcoming Events\"\n * showViewToggle={true}\n * onRegistrationSuccess={(result) => console.log('Registered!', result)}\n * />\n * ```\n */\n\n'use client'\n\nimport React, { useState, useEffect, useCallback } from 'react'\nimport type { CommerceOffering, CommerceSchedule, CheckoutResult } from './types'\nimport { CalendarView } from './CalendarView'\nimport { EventModal } from './EventModal'\nimport { useEventModal } from './useEventModal'\nimport { formatDate, formatTime, formatPrice } from './utils'\n\nexport type EventsViewMode = 'list' | 'calendar'\n\nexport interface EventsWidgetProps {\n /** Pre-loaded events (optional - will fetch if not provided) */\n events?: CommerceOffering[]\n /** Initial view mode */\n defaultView?: EventsViewMode\n /** Show view toggle buttons */\n showViewToggle?: boolean\n /** Section title */\n title?: string\n /** Subtitle or description */\n subtitle?: string\n /** Category filter */\n category?: string\n /** Maximum events to show in list view */\n limit?: number\n /** Show \"View All\" link */\n showViewAll?: boolean\n /** URL for \"View All\" link */\n viewAllUrl?: string\n /** Text for \"View All\" link */\n viewAllText?: string\n /** Message when no events */\n emptyMessage?: string\n /** Show empty state with icon */\n showEmptyIcon?: boolean\n \n // Registration options\n /** Collect phone number in registration */\n collectPhone?: boolean\n /** Additional form fields */\n additionalFields?: AdditionalField[]\n \n // Callbacks\n /** Called when registration/checkout succeeds */\n onRegistrationSuccess?: (result: CheckoutResult) => void\n /** Called when registration/checkout fails */\n onRegistrationError?: (error: string) => void\n /** Called when event is clicked (before modal opens) */\n onEventClick?: (event: CommerceOffering, schedule: CommerceSchedule) => void\n \n // Styling\n className?: string\n headerClassName?: string\n toggleClassName?: string\n listClassName?: string\n calendarClassName?: string\n eventCardClassName?: string\n modalClassName?: string\n}\n\nexport interface AdditionalField {\n name: string\n label: string\n type?: 'text' | 'email' | 'tel' | 'textarea' | 'select' | 'number'\n required?: boolean\n placeholder?: string\n options?: { value: string; label: string }[]\n}\n\n// Icons\nconst CalendarIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect>\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\"></line>\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\"></line>\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"></line>\n </svg>\n)\n\nconst ListIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"8\" y1=\"6\" x2=\"21\" y2=\"6\"></line>\n <line x1=\"8\" y1=\"12\" x2=\"21\" y2=\"12\"></line>\n <line x1=\"8\" y1=\"18\" x2=\"21\" y2=\"18\"></line>\n <line x1=\"3\" y1=\"6\" x2=\"3.01\" y2=\"6\"></line>\n <line x1=\"3\" y1=\"12\" x2=\"3.01\" y2=\"12\"></line>\n <line x1=\"3\" y1=\"18\" x2=\"3.01\" y2=\"18\"></line>\n </svg>\n)\n\nconst ClockIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n <polyline points=\"12 6 12 12 16 14\"></polyline>\n </svg>\n)\n\nconst LocationIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\"></path>\n <circle cx=\"12\" cy=\"10\" r=\"3\"></circle>\n </svg>\n)\n\nexport function EventsWidget({\n events: propEvents,\n defaultView = 'list',\n showViewToggle = true,\n title,\n subtitle,\n category,\n limit = 10,\n showViewAll = false,\n viewAllUrl = '/events',\n viewAllText = 'View All Events',\n emptyMessage = 'No upcoming events scheduled.',\n showEmptyIcon = true,\n collectPhone = false,\n additionalFields = [],\n onRegistrationSuccess,\n onRegistrationError,\n onEventClick,\n className = '',\n headerClassName = '',\n toggleClassName = '',\n listClassName = '',\n calendarClassName = '',\n eventCardClassName = '',\n modalClassName = '',\n}: EventsWidgetProps) {\n const [viewMode, setViewMode] = useState<EventsViewMode>(defaultView)\n const [events, setEvents] = useState<CommerceOffering[]>(propEvents || [])\n const [loading, setLoading] = useState(!propEvents)\n const [error, setError] = useState<string | null>(null)\n const [retryCount, setRetryCount] = useState(0)\n \n const { event, schedule, isOpen, openModal, closeModal } = useEventModal()\n \n // Fetch events from API\n useEffect(() => {\n if (propEvents) {\n setEvents(propEvents)\n return\n }\n \n async function loadEvents() {\n const apiUrl = getApiUrl()\n const apiKey = getApiKey()\n \n // Wait for API key to be available (set by SiteKitProvider)\n // If not available after a short delay, retry up to 3 times\n if (!apiKey) {\n if (retryCount < 3) {\n setTimeout(() => setRetryCount(c => c + 1), 100)\n return\n }\n console.warn('[EventsWidget] No API key configured. Make sure SiteKitProvider is wrapping your app.')\n setError(null) // Don't show error, just show empty state\n setEvents([])\n setLoading(false)\n return\n }\n \n setLoading(true)\n setError(null)\n \n try {\n const response = await fetch(`${apiUrl}/api/public/commerce/events`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': apiKey,\n },\n body: JSON.stringify({\n type: 'event',\n category,\n limit: limit * 2, // Fetch extra for calendar view\n }),\n })\n \n if (!response.ok) {\n throw new Error('Failed to fetch events')\n }\n \n const data = await response.json()\n setEvents(data.events || [])\n } catch (err) {\n console.error('Error loading events:', err)\n setError('Unable to load events. Please try again later.')\n } finally {\n setLoading(false)\n }\n }\n \n loadEvents()\n }, [propEvents, category, limit, retryCount])\n \n const handleEventClick = useCallback((clickedEvent: CommerceOffering, clickedSchedule: CommerceSchedule) => {\n onEventClick?.(clickedEvent, clickedSchedule)\n openModal(clickedEvent, clickedSchedule)\n }, [onEventClick, openModal])\n \n const handleSuccess = useCallback((result: CheckoutResult) => {\n onRegistrationSuccess?.(result)\n }, [onRegistrationSuccess])\n \n const handleError = useCallback((err: string) => {\n onRegistrationError?.(err)\n }, [onRegistrationError])\n \n // Loading state\n if (loading) {\n return (\n <div className={`site-kit-events-widget ${className}`}>\n {(title || subtitle) && (\n <div className={`site-kit-events-header ${headerClassName}`} style={{ marginBottom: '1.5rem' }}>\n {title && <h2 style={{ margin: 0, fontSize: '1.5rem', fontWeight: 600 }}>{title}</h2>}\n {subtitle && <p style={{ margin: '0.5rem 0 0', color: '#666' }}>{subtitle}</p>}\n </div>\n )}\n <div style={{ textAlign: 'center', padding: '3rem 1rem', color: '#666' }}>\n <div style={{\n width: '40px',\n height: '40px',\n margin: '0 auto 1rem',\n border: '3px solid #e5e7eb',\n borderTopColor: '#3b82f6',\n borderRadius: '50%',\n animation: 'site-kit-spin 1s linear infinite',\n }} />\n <p>Loading events...</p>\n </div>\n <style>{`\n @keyframes site-kit-spin {\n to { transform: rotate(360deg); }\n }\n `}</style>\n </div>\n )\n }\n \n // Error state\n if (error) {\n return (\n <div className={`site-kit-events-widget ${className}`}>\n {(title || subtitle) && (\n <div className={`site-kit-events-header ${headerClassName}`} style={{ marginBottom: '1.5rem' }}>\n {title && <h2 style={{ margin: 0, fontSize: '1.5rem', fontWeight: 600 }}>{title}</h2>}\n {subtitle && <p style={{ margin: '0.5rem 0 0', color: '#666' }}>{subtitle}</p>}\n </div>\n )}\n <div style={{ textAlign: 'center', padding: '3rem 1rem', color: '#dc2626' }}>\n <p>{error}</p>\n </div>\n </div>\n )\n }\n \n // Empty state\n if (events.length === 0) {\n return (\n <div className={`site-kit-events-widget ${className}`}>\n {(title || subtitle) && (\n <div className={`site-kit-events-header ${headerClassName}`} style={{ marginBottom: '1.5rem' }}>\n {title && <h2 style={{ margin: 0, fontSize: '1.5rem', fontWeight: 600 }}>{title}</h2>}\n {subtitle && <p style={{ margin: '0.5rem 0 0', color: '#666' }}>{subtitle}</p>}\n </div>\n )}\n <div style={{ textAlign: 'center', padding: '3rem 1rem', color: '#666' }}>\n {showEmptyIcon && (\n <svg\n style={{ width: '64px', height: '64px', margin: '0 auto 1rem', color: '#d1d5db' }}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5} d=\"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z\" />\n </svg>\n )}\n <p style={{ fontSize: '1.125rem', fontWeight: 500, margin: 0 }}>{emptyMessage}</p>\n </div>\n </div>\n )\n }\n \n // Limit events for list view\n const displayEvents = viewMode === 'list' ? events.slice(0, limit) : events\n \n return (\n <div className={`site-kit-events-widget ${className}`}>\n {/* Header */}\n {(title || subtitle || showViewToggle) && (\n <div \n className={`site-kit-events-header ${headerClassName}`}\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n marginBottom: '1.5rem',\n flexWrap: 'wrap',\n gap: '1rem',\n }}\n >\n <div>\n {title && <h2 style={{ margin: 0, fontSize: '1.5rem', fontWeight: 600 }}>{title}</h2>}\n {subtitle && <p style={{ margin: '0.5rem 0 0', color: '#666' }}>{subtitle}</p>}\n </div>\n \n {showViewToggle && (\n <div \n className={`site-kit-events-toggle ${toggleClassName}`}\n style={{\n display: 'flex',\n gap: '0.25rem',\n background: '#f3f4f6',\n padding: '0.25rem',\n borderRadius: '0.5rem',\n }}\n >\n <button\n onClick={() => setViewMode('list')}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n padding: '0.5rem 1rem',\n border: 'none',\n borderRadius: '0.375rem',\n background: viewMode === 'list' ? '#fff' : 'transparent',\n color: viewMode === 'list' ? '#1f2937' : '#6b7280',\n fontWeight: 500,\n fontSize: '0.875rem',\n cursor: 'pointer',\n boxShadow: viewMode === 'list' ? '0 1px 2px rgba(0,0,0,0.05)' : 'none',\n transition: 'all 150ms',\n }}\n >\n <ListIcon />\n List\n </button>\n <button\n onClick={() => setViewMode('calendar')}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n padding: '0.5rem 1rem',\n border: 'none',\n borderRadius: '0.375rem',\n background: viewMode === 'calendar' ? '#fff' : 'transparent',\n color: viewMode === 'calendar' ? '#1f2937' : '#6b7280',\n fontWeight: 500,\n fontSize: '0.875rem',\n cursor: 'pointer',\n boxShadow: viewMode === 'calendar' ? '0 1px 2px rgba(0,0,0,0.05)' : 'none',\n transition: 'all 150ms',\n }}\n >\n <CalendarIcon />\n Calendar\n </button>\n </div>\n )}\n </div>\n )}\n \n {/* Content */}\n {viewMode === 'list' ? (\n <div className={`site-kit-events-list ${listClassName}`}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }}>\n {displayEvents.map(eventItem => {\n const nextSchedule = eventItem.next_schedule || eventItem.schedules?.[0]\n const isFree = !eventItem.price || eventItem.price === 0\n \n return (\n <div\n key={eventItem.id}\n className={`site-kit-event-card ${eventCardClassName}`}\n onClick={() => nextSchedule && handleEventClick(eventItem, nextSchedule)}\n style={{\n display: 'flex',\n flexDirection: 'column',\n gap: '0.75rem',\n padding: '1.25rem',\n background: '#fff',\n border: '1px solid #e5e7eb',\n borderRadius: '0.75rem',\n cursor: nextSchedule ? 'pointer' : 'default',\n transition: 'all 150ms',\n }}\n onMouseEnter={(e) => {\n if (nextSchedule) {\n e.currentTarget.style.borderColor = '#3b82f6'\n e.currentTarget.style.boxShadow = '0 4px 6px -1px rgba(0, 0, 0, 0.1)'\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.borderColor = '#e5e7eb'\n e.currentTarget.style.boxShadow = 'none'\n }}\n >\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'flex-start', gap: '1rem' }}>\n <div style={{ flex: 1 }}>\n <h3 style={{ margin: 0, fontSize: '1.125rem', fontWeight: 600, color: '#1f2937' }}>\n {eventItem.name}\n </h3>\n {eventItem.short_description && (\n <p style={{ margin: '0.5rem 0 0', color: '#6b7280', fontSize: '0.875rem', lineHeight: 1.5 }}>\n {eventItem.short_description}\n </p>\n )}\n </div>\n \n {eventItem.price_is_public && (\n <div style={{\n padding: '0.375rem 0.75rem',\n background: isFree ? '#dcfce7' : '#dbeafe',\n color: isFree ? '#166534' : '#1e40af',\n borderRadius: '9999px',\n fontSize: '0.875rem',\n fontWeight: 600,\n whiteSpace: 'nowrap',\n }}>\n {isFree ? 'Free' : formatPrice(eventItem.price ?? 0, eventItem.currency)}\n </div>\n )}\n </div>\n \n {nextSchedule && (\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: '1rem', fontSize: '0.875rem', color: '#6b7280' }}>\n <span style={{ display: 'flex', alignItems: 'center', gap: '0.375rem' }}>\n <CalendarIcon />\n {formatDate(nextSchedule.starts_at)}\n </span>\n <span style={{ display: 'flex', alignItems: 'center', gap: '0.375rem' }}>\n <ClockIcon />\n {formatTime(nextSchedule.starts_at)}\n </span>\n {eventItem.location && (\n <span style={{ display: 'flex', alignItems: 'center', gap: '0.375rem' }}>\n <LocationIcon />\n {eventItem.location}\n </span>\n )}\n {nextSchedule.spots_remaining !== null && nextSchedule.spots_remaining !== undefined && (\n <span style={{\n color: nextSchedule.spots_remaining < 5 ? '#dc2626' : '#6b7280',\n fontWeight: nextSchedule.spots_remaining < 5 ? 500 : 400,\n }}>\n {nextSchedule.spots_remaining === 0 \n ? 'Sold Out' \n : `${nextSchedule.spots_remaining} spots left`}\n </span>\n )}\n </div>\n )}\n </div>\n )\n })}\n </div>\n \n {showViewAll && events.length > limit && (\n <div style={{ textAlign: 'center', marginTop: '1.5rem' }}>\n <a\n href={viewAllUrl}\n style={{\n display: 'inline-block',\n padding: '0.75rem 1.5rem',\n background: '#f3f4f6',\n color: '#1f2937',\n borderRadius: '0.5rem',\n textDecoration: 'none',\n fontWeight: 500,\n fontSize: '0.875rem',\n transition: 'all 150ms',\n }}\n >\n {viewAllText}\n </a>\n </div>\n )}\n </div>\n ) : (\n <div className={`site-kit-events-calendar ${calendarClassName}`}>\n <CalendarView\n events={events}\n onEventClick={handleEventClick}\n showNavigation={true}\n showHeader={true}\n />\n </div>\n )}\n \n {/* Registration Modal */}\n <EventModal\n event={event}\n schedule={schedule}\n isOpen={isOpen}\n onClose={closeModal}\n onSuccess={handleSuccess}\n onError={handleError}\n collectPhone={collectPhone}\n additionalFields={additionalFields}\n className={modalClassName}\n />\n </div>\n )\n}\n\n// ============================================\n// Helpers\n// ============================================\n\nfunction getApiUrl(): string {\n if (typeof window !== 'undefined') {\n return (window as any).__SITE_KIT_API_URL__ || 'https://api.uptrademedia.com'\n }\n return 'https://api.uptrademedia.com'\n}\n\nfunction getApiKey(): string {\n if (typeof window !== 'undefined') {\n return (window as any).__SITE_KIT_API_KEY__ || ''\n }\n return ''\n}\n\nexport default EventsWidget\n"]}
|