build: production build with Phase 1 2025 Bible Reader implementation complete

Includes all Phase 1 features:
- Search-first navigation with auto-complete
- Responsive reading interface (desktop/tablet/mobile)
- 4 customization presets + full fine-tuning controls
- Layered details panel with notes, bookmarks, highlights
- Smart offline caching with IndexedDB and auto-sync
- Full accessibility (WCAG 2.1 AA)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-11 20:38:01 +00:00
parent b8652b9f0a
commit 9b5c0ed8bb
50 changed files with 20146 additions and 859 deletions

View File

@@ -0,0 +1,78 @@
import { CollectionConfig } from 'payload';
export const FailedPayments: CollectionConfig = {
slug: 'failed-payments',
admin: {
useAsTitle: 'id',
defaultColumns: ['stripePaymentIntentId', 'amount', 'errorCode', 'createdAt'],
group: 'E-Commerce',
},
fields: [
{
name: 'stripePaymentIntentId',
type: 'text',
unique: true,
required: true,
index: true,
admin: {
readOnly: true,
},
},
{
name: 'customerId',
type: 'text',
index: true,
},
{
name: 'amount',
type: 'number',
required: true,
admin: {
description: 'Amount in cents',
},
},
{
name: 'currency',
type: 'text',
required: true,
},
{
name: 'error',
type: 'textarea',
required: true,
},
{
name: 'errorCode',
type: 'text',
},
{
name: 'retryCount',
type: 'number',
defaultValue: 0,
min: 0,
},
{
name: 'resolved',
type: 'checkbox',
defaultValue: false,
index: true,
},
{
name: 'resolvedAt',
type: 'date',
},
{
name: 'notes',
type: 'textarea',
admin: {
description: 'Internal notes about this failure',
},
},
],
access: {
read: ({ req }) => req.user?.role === 'admin' || req.user?.role === 'super-admin',
create: ({ req }) => req.user?.role === 'admin' || req.user?.role === 'super-admin',
update: ({ req }) => req.user?.role === 'admin' || req.user?.role === 'super-admin',
delete: ({ req }) => req.user?.role === 'super-admin',
},
};