# Generated by Django 5.2.4 on 2025-07-28 23:09

import django.db.models.deletion
import django.utils.timezone
import modelcluster.fields
import wagtail.contrib.forms.models
import wagtail.fields
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('wagtail_feathers', '0001_initial'),
        ('wagtailcore', '0094_alter_page_locale'),
        ('wagtailimages', '0027_image_description'),
    ]

    operations = [
        migrations.CreateModel(
            name='ArticleIndexPage',
            fields=[
                ('featherbasepage_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtail_feathers.featherbasepage')),
                ('header', wagtail.fields.StreamField([('heading', 5), ('image', 9), ('hero', 31), ('cta', 38)], blank=True, block_lookup={0: ('wagtail.blocks.BooleanBlock', (), {'default': True, 'label': 'Full width', 'required': False}), 1: ('wagtail.blocks.RichTextBlock', (), {'features': ['bold', 'italic'], 'required': False}), 2: ('wagtail.blocks.CharBlock', (), {'label': 'Sub Heading', 'max_length': 120, 'required': False}), 3: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('left', 'Left'), ('center', 'Center'), ('right', 'Right')], 'help_text': 'Text alignment for the hero content'}), 4: ('wagtail_feathers.blocks.ThemeVariantChooserBlock', (), {'component_type': 'heading', 'default': 'default', 'help_text': 'Select a theme variant for this component', 'label': 'Theme variant', 'required': False}), 5: ('wagtail.blocks.StructBlock', [[('fluid', 0), ('heading', 1), ('sub_heading', 2), ('alignment', 3), ('theme_variant', 4)]], {'label': 'Heading', 'required': False}), 6: ('wagtail.images.blocks.ImageChooserBlock', (), {'required': True}), 7: ('wagtail.blocks.CharBlock', (), {'help_text': "If left blank, the image's global alt text will be used.", 'required': False}), 8: ('wagtail_feathers.blocks.ThemeVariantChooserBlock', (), {'component_type': 'image', 'default': 'default', 'help_text': 'Select a theme variant for this component', 'label': 'Theme variant', 'required': False}), 9: ('wagtail.blocks.StructBlock', [[('fluid', 0), ('image', 6), ('image_alt_text', 7), ('theme_variant', 8)]], {'label': 'Image', 'required': False}), 10: ('wagtail.blocks.CharBlock', (), {'help_text': 'Optional id for the hero section style', 'max_length': 50, 'required': False}), 11: ('wagtail.blocks.RichTextBlock', (), {'help_text': 'Main headline for the hero section (max 120 characters)', 'max_length': 120}), 12: ('wagtail.blocks.CharBlock', (), {'help_text': 'Optional subheadline or tagline (max 200 characters)', 'max_length': 200, 'required': False}), 13: ('wagtail.blocks.RichTextBlock', (), {'features': ['bold', 'italic', 'link'], 'help_text': 'Optional description text with basic formatting', 'required': False}), 14: ('wagtail.images.blocks.ImageChooserBlock', (), {'help_text': 'Background image for the hero section', 'required': False}), 15: ('wagtail.blocks.CharBlock', (), {'help_text': 'Alt text for background image (for accessibility)', 'max_length': 100, 'required': False}), 16: ('wagtail.blocks.CharBlock', (), {'help_text': 'Button text', 'max_length': 50}), 17: ('wagtail.blocks.PageChooserBlock', (), {'required': False}), 18: ('wagtail.documents.blocks.DocumentChooserBlock', (), {'required': False}), 19: ('wagtail.blocks.CharBlock', (), {'help_text': "Leave blank to use link's title.", 'required': False}), 20: ('wagtail.blocks.StructBlock', [[('page', 17), ('document', 18), ('title', 19)]], {}), 21: ('wagtail.blocks.URLBlock', (), {}), 22: ('wagtail.blocks.CharBlock', (), {'required': False}), 23: ('wagtail.blocks.BooleanBlock', (), {'help_text': 'Open the link in a new tab', 'required': False}), 24: ('wagtail.blocks.StructBlock', [[('link', 21), ('title', 22), ('link_target', 23)]], {}), 25: ('wagtail.blocks.StreamBlock', [[('internal', 20), ('external', 24)]], {'max_num': 1}), 26: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('primary', 'Primary'), ('secondary', 'Secondary'), ('outline', 'Outline')], 'help_text': 'Button style'}), 27: ('wagtail.blocks.StructBlock', [[('text', 16), ('link', 25), ('style', 26)]], {'label': 'Call-to-Action Button'}), 28: ('wagtail.blocks.StreamBlock', [[('cta', 27)]], {'help_text': 'Add up to 3 call-to-action buttons', 'label': 'Call-to-Action Buttons', 'max_num': 3, 'required': False}), 29: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('0', 'No overlay'), ('25', 'Light overlay (25%)'), ('50', 'Medium overlay (50%)'), ('75', 'Dark overlay (75%)'), ('85', 'Darker overlay (85%)')], 'help_text': 'Overlay opacity for better text readability over background image', 'required': False}), 30: ('wagtail_feathers.blocks.ThemeVariantChooserBlock', (), {'component_type': 'hero', 'default': 'default', 'help_text': 'Select a theme variant for this component', 'label': 'Theme variant', 'required': False}), 31: ('wagtail.blocks.StructBlock', [[('style_id', 10), ('heading', 11), ('sub_heading', 12), ('description', 13), ('background_image', 14), ('background_image_alt', 15), ('call_to_actions', 28), ('fluid', 0), ('alignment', 3), ('overlay_opacity', 29), ('theme_variant', 30)]], {'label': 'Hero Section', 'required': False}), 32: ('wagtail.blocks.CharBlock', (), {'help_text': 'Call-to-action heading', 'max_length': 100}), 33: ('wagtail.blocks.RichTextBlock', (), {'features': ['bold', 'italic'], 'help_text': 'Supporting text for the call-to-action', 'required': False}), 34: ('wagtail.blocks.CharBlock', (), {'help_text': 'Text for the action button', 'max_length': 50}), 35: ('wagtail.blocks.StreamBlock', [[('internal', 20), ('external', 24)]], {'help_text': 'Link for the action button', 'max_num': 1}), 36: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('default', 'Default'), ('primary', 'Primary'), ('secondary', 'Secondary'), ('accent', 'Accent')], 'help_text': 'Background color theme for the CTA section'}), 37: ('wagtail_feathers.blocks.ThemeVariantChooserBlock', (), {'component_type': 'cta', 'default': 'default', 'help_text': 'Select a theme variant for this component', 'label': 'Theme variant', 'required': False}), 38: ('wagtail.blocks.StructBlock', [[('heading', 32), ('text', 33), ('button_text', 34), ('button_link', 35), ('background_color', 36), ('theme_variant', 37)]], {'label': 'Call to Action', 'required': False})}, help_text='Page header blocks.')),
                ('items_per_page', models.PositiveIntegerField(default=10, help_text='Number of items to show per page')),
            ],
            options={
                'verbose_name': 'Article Index Page',
            },
            bases=('wagtail_feathers.featherbasepage',),
        ),
        migrations.CreateModel(
            name='ContactPage',
            fields=[
                ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
                ('to_address', models.CharField(blank=True, help_text='Optional - form submissions will be emailed to these addresses. Separate multiple addresses by comma.', max_length=255, validators=[wagtail.contrib.forms.models.validate_to_address], verbose_name='to address')),
                ('from_address', models.EmailField(blank=True, max_length=255, verbose_name='from address')),
                ('subject', models.CharField(blank=True, max_length=255, verbose_name='subject')),
                ('heading', wagtail.fields.RichTextField(blank=True)),
                ('body', wagtail.fields.RichTextField(blank=True)),
                ('action_text', models.CharField(blank=True, help_text='Form action text.', max_length=32)),
                ('thank_you_text', wagtail.fields.RichTextField(blank=True)),
                ('template_variant', models.CharField(blank=True, help_text="Optional template variant (e.g., 'contact', 'newsletter'). Leave empty for default template.", max_length=50, verbose_name='Template Variant')),
                ('office_hours', wagtail.fields.RichTextField(blank=True, help_text='Business hours and availability')),
                ('phone_number', models.CharField(blank=True, help_text='Contact phone number', max_length=20)),
                ('address', wagtail.fields.RichTextField(blank=True, help_text='Physical address')),
                ('map_embed', models.TextField(blank=True, help_text='Embed code for map (Google Maps, etc.)')),
                ('emergency_contact', wagtail.fields.RichTextField(blank=True, help_text='Emergency or after-hours contact information')),
            ],
            options={
                'verbose_name': 'Contact Page',
            },
            bases=(wagtail.contrib.forms.models.FormMixin, 'wagtailcore.page', models.Model),
        ),
        migrations.CreateModel(
            name='FAQPage',
            fields=[
                ('featherbasepage_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtail_feathers.featherbasepage')),
                ('header', wagtail.fields.StreamField([('heading', 5), ('image', 9), ('hero', 31), ('cta', 38)], blank=True, block_lookup={0: ('wagtail.blocks.BooleanBlock', (), {'default': True, 'label': 'Full width', 'required': False}), 1: ('wagtail.blocks.RichTextBlock', (), {'features': ['bold', 'italic'], 'required': False}), 2: ('wagtail.blocks.CharBlock', (), {'label': 'Sub Heading', 'max_length': 120, 'required': False}), 3: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('left', 'Left'), ('center', 'Center'), ('right', 'Right')], 'help_text': 'Text alignment for the hero content'}), 4: ('wagtail_feathers.blocks.ThemeVariantChooserBlock', (), {'component_type': 'heading', 'default': 'default', 'help_text': 'Select a theme variant for this component', 'label': 'Theme variant', 'required': False}), 5: ('wagtail.blocks.StructBlock', [[('fluid', 0), ('heading', 1), ('sub_heading', 2), ('alignment', 3), ('theme_variant', 4)]], {'label': 'Heading', 'required': False}), 6: ('wagtail.images.blocks.ImageChooserBlock', (), {'required': True}), 7: ('wagtail.blocks.CharBlock', (), {'help_text': "If left blank, the image's global alt text will be used.", 'required': False}), 8: ('wagtail_feathers.blocks.ThemeVariantChooserBlock', (), {'component_type': 'image', 'default': 'default', 'help_text': 'Select a theme variant for this component', 'label': 'Theme variant', 'required': False}), 9: ('wagtail.blocks.StructBlock', [[('fluid', 0), ('image', 6), ('image_alt_text', 7), ('theme_variant', 8)]], {'label': 'Image', 'required': False}), 10: ('wagtail.blocks.CharBlock', (), {'help_text': 'Optional id for the hero section style', 'max_length': 50, 'required': False}), 11: ('wagtail.blocks.RichTextBlock', (), {'help_text': 'Main headline for the hero section (max 120 characters)', 'max_length': 120}), 12: ('wagtail.blocks.CharBlock', (), {'help_text': 'Optional subheadline or tagline (max 200 characters)', 'max_length': 200, 'required': False}), 13: ('wagtail.blocks.RichTextBlock', (), {'features': ['bold', 'italic', 'link'], 'help_text': 'Optional description text with basic formatting', 'required': False}), 14: ('wagtail.images.blocks.ImageChooserBlock', (), {'help_text': 'Background image for the hero section', 'required': False}), 15: ('wagtail.blocks.CharBlock', (), {'help_text': 'Alt text for background image (for accessibility)', 'max_length': 100, 'required': False}), 16: ('wagtail.blocks.CharBlock', (), {'help_text': 'Button text', 'max_length': 50}), 17: ('wagtail.blocks.PageChooserBlock', (), {'required': False}), 18: ('wagtail.documents.blocks.DocumentChooserBlock', (), {'required': False}), 19: ('wagtail.blocks.CharBlock', (), {'help_text': "Leave blank to use link's title.", 'required': False}), 20: ('wagtail.blocks.StructBlock', [[('page', 17), ('document', 18), ('title', 19)]], {}), 21: ('wagtail.blocks.URLBlock', (), {}), 22: ('wagtail.blocks.CharBlock', (), {'required': False}), 23: ('wagtail.blocks.BooleanBlock', (), {'help_text': 'Open the link in a new tab', 'required': False}), 24: ('wagtail.blocks.StructBlock', [[('link', 21), ('title', 22), ('link_target', 23)]], {}), 25: ('wagtail.blocks.StreamBlock', [[('internal', 20), ('external', 24)]], {'max_num': 1}), 26: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('primary', 'Primary'), ('secondary', 'Secondary'), ('outline', 'Outline')], 'help_text': 'Button style'}), 27: ('wagtail.blocks.StructBlock', [[('text', 16), ('link', 25), ('style', 26)]], {'label': 'Call-to-Action Button'}), 28: ('wagtail.blocks.StreamBlock', [[('cta', 27)]], {'help_text': 'Add up to 3 call-to-action buttons', 'label': 'Call-to-Action Buttons', 'max_num': 3, 'required': False}), 29: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('0', 'No overlay'), ('25', 'Light overlay (25%)'), ('50', 'Medium overlay (50%)'), ('75', 'Dark overlay (75%)'), ('85', 'Darker overlay (85%)')], 'help_text': 'Overlay opacity for better text readability over background image', 'required': False}), 30: ('wagtail_feathers.blocks.ThemeVariantChooserBlock', (), {'component_type': 'hero', 'default': 'default', 'help_text': 'Select a theme variant for this component', 'label': 'Theme variant', 'required': False}), 31: ('wagtail.blocks.StructBlock', [[('style_id', 10), ('heading', 11), ('sub_heading', 12), ('description', 13), ('background_image', 14), ('background_image_alt', 15), ('call_to_actions', 28), ('fluid', 0), ('alignment', 3), ('overlay_opacity', 29), ('theme_variant', 30)]], {'label': 'Hero Section', 'required': False}), 32: ('wagtail.blocks.CharBlock', (), {'help_text': 'Call-to-action heading', 'max_length': 100}), 33: ('wagtail.blocks.RichTextBlock', (), {'features': ['bold', 'italic'], 'help_text': 'Supporting text for the call-to-action', 'required': False}), 34: ('wagtail.blocks.CharBlock', (), {'help_text': 'Text for the action button', 'max_length': 50}), 35: ('wagtail.blocks.StreamBlock', [[('internal', 20), ('external', 24)]], {'help_text': 'Link for the action button', 'max_num': 1}), 36: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('default', 'Default'), ('primary', 'Primary'), ('secondary', 'Secondary'), ('accent', 'Accent')], 'help_text': 'Background color theme for the CTA section'}), 37: ('wagtail_feathers.blocks.ThemeVariantChooserBlock', (), {'component_type': 'cta', 'default': 'default', 'help_text': 'Select a theme variant for this component', 'label': 'Theme variant', 'required': False}), 38: ('wagtail.blocks.StructBlock', [[('heading', 32), ('text', 33), ('button_text', 34), ('button_link', 35), ('background_color', 36), ('theme_variant', 37)]], {'label': 'Call to Action', 'required': False})}, help_text='Page header blocks.')),
                ('introduction', wagtail.fields.RichTextField(blank=True, help_text='Introduction text for the FAQ page')),
                ('show_search', models.BooleanField(default=True, help_text='Show search functionality on the FAQ page')),
                ('show_categories', models.BooleanField(default=True, help_text='Show category filtering on the FAQ page')),
                ('items_per_page', models.PositiveIntegerField(default=10, help_text='Number of FAQ items to show per page')),
            ],
            options={
                'verbose_name': 'FAQ Page',
            },
            bases=('wagtail_feathers.featherbasepage',),
        ),
        migrations.CreateModel(
            name='HomePage',
            fields=[
                ('featherbasepage_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtail_feathers.featherbasepage')),
                ('header', wagtail.fields.StreamField([('heading', 5), ('image', 9), ('hero', 31), ('cta', 38)], blank=True, block_lookup={0: ('wagtail.blocks.BooleanBlock', (), {'default': True, 'label': 'Full width', 'required': False}), 1: ('wagtail.blocks.RichTextBlock', (), {'features': ['bold', 'italic'], 'required': False}), 2: ('wagtail.blocks.CharBlock', (), {'label': 'Sub Heading', 'max_length': 120, 'required': False}), 3: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('left', 'Left'), ('center', 'Center'), ('right', 'Right')], 'help_text': 'Text alignment for the hero content'}), 4: ('wagtail_feathers.blocks.ThemeVariantChooserBlock', (), {'component_type': 'heading', 'default': 'default', 'help_text': 'Select a theme variant for this component', 'label': 'Theme variant', 'required': False}), 5: ('wagtail.blocks.StructBlock', [[('fluid', 0), ('heading', 1), ('sub_heading', 2), ('alignment', 3), ('theme_variant', 4)]], {'label': 'Heading', 'required': False}), 6: ('wagtail.images.blocks.ImageChooserBlock', (), {'required': True}), 7: ('wagtail.blocks.CharBlock', (), {'help_text': "If left blank, the image's global alt text will be used.", 'required': False}), 8: ('wagtail_feathers.blocks.ThemeVariantChooserBlock', (), {'component_type': 'image', 'default': 'default', 'help_text': 'Select a theme variant for this component', 'label': 'Theme variant', 'required': False}), 9: ('wagtail.blocks.StructBlock', [[('fluid', 0), ('image', 6), ('image_alt_text', 7), ('theme_variant', 8)]], {'label': 'Image', 'required': False}), 10: ('wagtail.blocks.CharBlock', (), {'help_text': 'Optional id for the hero section style', 'max_length': 50, 'required': False}), 11: ('wagtail.blocks.RichTextBlock', (), {'help_text': 'Main headline for the hero section (max 120 characters)', 'max_length': 120}), 12: ('wagtail.blocks.CharBlock', (), {'help_text': 'Optional subheadline or tagline (max 200 characters)', 'max_length': 200, 'required': False}), 13: ('wagtail.blocks.RichTextBlock', (), {'features': ['bold', 'italic', 'link'], 'help_text': 'Optional description text with basic formatting', 'required': False}), 14: ('wagtail.images.blocks.ImageChooserBlock', (), {'help_text': 'Background image for the hero section', 'required': False}), 15: ('wagtail.blocks.CharBlock', (), {'help_text': 'Alt text for background image (for accessibility)', 'max_length': 100, 'required': False}), 16: ('wagtail.blocks.CharBlock', (), {'help_text': 'Button text', 'max_length': 50}), 17: ('wagtail.blocks.PageChooserBlock', (), {'required': False}), 18: ('wagtail.documents.blocks.DocumentChooserBlock', (), {'required': False}), 19: ('wagtail.blocks.CharBlock', (), {'help_text': "Leave blank to use link's title.", 'required': False}), 20: ('wagtail.blocks.StructBlock', [[('page', 17), ('document', 18), ('title', 19)]], {}), 21: ('wagtail.blocks.URLBlock', (), {}), 22: ('wagtail.blocks.CharBlock', (), {'required': False}), 23: ('wagtail.blocks.BooleanBlock', (), {'help_text': 'Open the link in a new tab', 'required': False}), 24: ('wagtail.blocks.StructBlock', [[('link', 21), ('title', 22), ('link_target', 23)]], {}), 25: ('wagtail.blocks.StreamBlock', [[('internal', 20), ('external', 24)]], {'max_num': 1}), 26: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('primary', 'Primary'), ('secondary', 'Secondary'), ('outline', 'Outline')], 'help_text': 'Button style'}), 27: ('wagtail.blocks.StructBlock', [[('text', 16), ('link', 25), ('style', 26)]], {'label': 'Call-to-Action Button'}), 28: ('wagtail.blocks.StreamBlock', [[('cta', 27)]], {'help_text': 'Add up to 3 call-to-action buttons', 'label': 'Call-to-Action Buttons', 'max_num': 3, 'required': False}), 29: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('0', 'No overlay'), ('25', 'Light overlay (25%)'), ('50', 'Medium overlay (50%)'), ('75', 'Dark overlay (75%)'), ('85', 'Darker overlay (85%)')], 'help_text': 'Overlay opacity for better text readability over background image', 'required': False}), 30: ('wagtail_feathers.blocks.ThemeVariantChooserBlock', (), {'component_type': 'hero', 'default': 'default', 'help_text': 'Select a theme variant for this component', 'label': 'Theme variant', 'required': False}), 31: ('wagtail.blocks.StructBlock', [[('style_id', 10), ('heading', 11), ('sub_heading', 12), ('description', 13), ('background_image', 14), ('background_image_alt', 15), ('call_to_actions', 28), ('fluid', 0), ('alignment', 3), ('overlay_opacity', 29), ('theme_variant', 30)]], {'label': 'Hero Section', 'required': False}), 32: ('wagtail.blocks.CharBlock', (), {'help_text': 'Call-to-action heading', 'max_length': 100}), 33: ('wagtail.blocks.RichTextBlock', (), {'features': ['bold', 'italic'], 'help_text': 'Supporting text for the call-to-action', 'required': False}), 34: ('wagtail.blocks.CharBlock', (), {'help_text': 'Text for the action button', 'max_length': 50}), 35: ('wagtail.blocks.StreamBlock', [[('internal', 20), ('external', 24)]], {'help_text': 'Link for the action button', 'max_num': 1}), 36: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('default', 'Default'), ('primary', 'Primary'), ('secondary', 'Secondary'), ('accent', 'Accent')], 'help_text': 'Background color theme for the CTA section'}), 37: ('wagtail_feathers.blocks.ThemeVariantChooserBlock', (), {'component_type': 'cta', 'default': 'default', 'help_text': 'Select a theme variant for this component', 'label': 'Theme variant', 'required': False}), 38: ('wagtail.blocks.StructBlock', [[('heading', 32), ('text', 33), ('button_text', 34), ('button_link', 35), ('background_color', 36), ('theme_variant', 37)]], {'label': 'Call to Action', 'required': False})}, help_text='Page header blocks.')),
            ],
            options={
                'verbose_name': 'Home Page',
            },
            bases=('wagtail_feathers.featherbasepage',),
        ),
        migrations.CreateModel(
            name='WebPage',
            fields=[
                ('featherbasepage_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtail_feathers.featherbasepage')),
                ('header', wagtail.fields.StreamField([('heading', 5), ('image', 9), ('hero', 31), ('cta', 38)], blank=True, block_lookup={0: ('wagtail.blocks.BooleanBlock', (), {'default': True, 'label': 'Full width', 'required': False}), 1: ('wagtail.blocks.RichTextBlock', (), {'features': ['bold', 'italic'], 'required': False}), 2: ('wagtail.blocks.CharBlock', (), {'label': 'Sub Heading', 'max_length': 120, 'required': False}), 3: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('left', 'Left'), ('center', 'Center'), ('right', 'Right')], 'help_text': 'Text alignment for the hero content'}), 4: ('wagtail_feathers.blocks.ThemeVariantChooserBlock', (), {'component_type': 'heading', 'default': 'default', 'help_text': 'Select a theme variant for this component', 'label': 'Theme variant', 'required': False}), 5: ('wagtail.blocks.StructBlock', [[('fluid', 0), ('heading', 1), ('sub_heading', 2), ('alignment', 3), ('theme_variant', 4)]], {'label': 'Heading', 'required': False}), 6: ('wagtail.images.blocks.ImageChooserBlock', (), {'required': True}), 7: ('wagtail.blocks.CharBlock', (), {'help_text': "If left blank, the image's global alt text will be used.", 'required': False}), 8: ('wagtail_feathers.blocks.ThemeVariantChooserBlock', (), {'component_type': 'image', 'default': 'default', 'help_text': 'Select a theme variant for this component', 'label': 'Theme variant', 'required': False}), 9: ('wagtail.blocks.StructBlock', [[('fluid', 0), ('image', 6), ('image_alt_text', 7), ('theme_variant', 8)]], {'label': 'Image', 'required': False}), 10: ('wagtail.blocks.CharBlock', (), {'help_text': 'Optional id for the hero section style', 'max_length': 50, 'required': False}), 11: ('wagtail.blocks.RichTextBlock', (), {'help_text': 'Main headline for the hero section (max 120 characters)', 'max_length': 120}), 12: ('wagtail.blocks.CharBlock', (), {'help_text': 'Optional subheadline or tagline (max 200 characters)', 'max_length': 200, 'required': False}), 13: ('wagtail.blocks.RichTextBlock', (), {'features': ['bold', 'italic', 'link'], 'help_text': 'Optional description text with basic formatting', 'required': False}), 14: ('wagtail.images.blocks.ImageChooserBlock', (), {'help_text': 'Background image for the hero section', 'required': False}), 15: ('wagtail.blocks.CharBlock', (), {'help_text': 'Alt text for background image (for accessibility)', 'max_length': 100, 'required': False}), 16: ('wagtail.blocks.CharBlock', (), {'help_text': 'Button text', 'max_length': 50}), 17: ('wagtail.blocks.PageChooserBlock', (), {'required': False}), 18: ('wagtail.documents.blocks.DocumentChooserBlock', (), {'required': False}), 19: ('wagtail.blocks.CharBlock', (), {'help_text': "Leave blank to use link's title.", 'required': False}), 20: ('wagtail.blocks.StructBlock', [[('page', 17), ('document', 18), ('title', 19)]], {}), 21: ('wagtail.blocks.URLBlock', (), {}), 22: ('wagtail.blocks.CharBlock', (), {'required': False}), 23: ('wagtail.blocks.BooleanBlock', (), {'help_text': 'Open the link in a new tab', 'required': False}), 24: ('wagtail.blocks.StructBlock', [[('link', 21), ('title', 22), ('link_target', 23)]], {}), 25: ('wagtail.blocks.StreamBlock', [[('internal', 20), ('external', 24)]], {'max_num': 1}), 26: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('primary', 'Primary'), ('secondary', 'Secondary'), ('outline', 'Outline')], 'help_text': 'Button style'}), 27: ('wagtail.blocks.StructBlock', [[('text', 16), ('link', 25), ('style', 26)]], {'label': 'Call-to-Action Button'}), 28: ('wagtail.blocks.StreamBlock', [[('cta', 27)]], {'help_text': 'Add up to 3 call-to-action buttons', 'label': 'Call-to-Action Buttons', 'max_num': 3, 'required': False}), 29: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('0', 'No overlay'), ('25', 'Light overlay (25%)'), ('50', 'Medium overlay (50%)'), ('75', 'Dark overlay (75%)'), ('85', 'Darker overlay (85%)')], 'help_text': 'Overlay opacity for better text readability over background image', 'required': False}), 30: ('wagtail_feathers.blocks.ThemeVariantChooserBlock', (), {'component_type': 'hero', 'default': 'default', 'help_text': 'Select a theme variant for this component', 'label': 'Theme variant', 'required': False}), 31: ('wagtail.blocks.StructBlock', [[('style_id', 10), ('heading', 11), ('sub_heading', 12), ('description', 13), ('background_image', 14), ('background_image_alt', 15), ('call_to_actions', 28), ('fluid', 0), ('alignment', 3), ('overlay_opacity', 29), ('theme_variant', 30)]], {'label': 'Hero Section', 'required': False}), 32: ('wagtail.blocks.CharBlock', (), {'help_text': 'Call-to-action heading', 'max_length': 100}), 33: ('wagtail.blocks.RichTextBlock', (), {'features': ['bold', 'italic'], 'help_text': 'Supporting text for the call-to-action', 'required': False}), 34: ('wagtail.blocks.CharBlock', (), {'help_text': 'Text for the action button', 'max_length': 50}), 35: ('wagtail.blocks.StreamBlock', [[('internal', 20), ('external', 24)]], {'help_text': 'Link for the action button', 'max_num': 1}), 36: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('default', 'Default'), ('primary', 'Primary'), ('secondary', 'Secondary'), ('accent', 'Accent')], 'help_text': 'Background color theme for the CTA section'}), 37: ('wagtail_feathers.blocks.ThemeVariantChooserBlock', (), {'component_type': 'cta', 'default': 'default', 'help_text': 'Select a theme variant for this component', 'label': 'Theme variant', 'required': False}), 38: ('wagtail.blocks.StructBlock', [[('heading', 32), ('text', 33), ('button_text', 34), ('button_link', 35), ('background_color', 36), ('theme_variant', 37)]], {'label': 'Call to Action', 'required': False})}, help_text='Page header blocks.')),
            ],
            options={
                'verbose_name': 'Web Page',
                'ordering': ['-first_published_at'],
            },
            bases=('wagtail_feathers.featherbasepage',),
        ),
        migrations.CreateModel(
            name='ArticlePage',
            fields=[
                ('featherbasepage_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtail_feathers.featherbasepage')),
                ('reading_time_minutes', models.PositiveIntegerField(blank=True, help_text='Estimated reading time in minutes (leave blank to auto-calculate from content)', null=True)),
                ('introduction', wagtail.fields.RichTextField(blank=True)),
                ('publication_date', models.DateField(default=django.utils.timezone.now, help_text='Official first publication date.')),
                ('revision_date', models.DateField(blank=True, help_text='Official last revision date.', null=True)),
                ('display_authors', models.BooleanField(default=False, help_text='Display author names on the page.')),
                ('excerpt', wagtail.fields.RichTextField(blank=True, help_text='Brief summary of the article (used in listings and meta descriptions)')),
                ('featured_image', models.ForeignKey(blank=True, help_text='Featured image for the article', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image')),
                ('image', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image')),
            ],
            options={
                'verbose_name': 'Article Page',
            },
            bases=('wagtail_feathers.featherbasepage', models.Model),
        ),
        migrations.CreateModel(
            name='AuthorPage',
            fields=[
                ('featherbasepage_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtail_feathers.featherbasepage')),
                ('header', wagtail.fields.StreamField([('heading', 5), ('image', 9), ('hero', 31), ('cta', 38)], blank=True, block_lookup={0: ('wagtail.blocks.BooleanBlock', (), {'default': True, 'label': 'Full width', 'required': False}), 1: ('wagtail.blocks.RichTextBlock', (), {'features': ['bold', 'italic'], 'required': False}), 2: ('wagtail.blocks.CharBlock', (), {'label': 'Sub Heading', 'max_length': 120, 'required': False}), 3: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('left', 'Left'), ('center', 'Center'), ('right', 'Right')], 'help_text': 'Text alignment for the hero content'}), 4: ('wagtail_feathers.blocks.ThemeVariantChooserBlock', (), {'component_type': 'heading', 'default': 'default', 'help_text': 'Select a theme variant for this component', 'label': 'Theme variant', 'required': False}), 5: ('wagtail.blocks.StructBlock', [[('fluid', 0), ('heading', 1), ('sub_heading', 2), ('alignment', 3), ('theme_variant', 4)]], {'label': 'Heading', 'required': False}), 6: ('wagtail.images.blocks.ImageChooserBlock', (), {'required': True}), 7: ('wagtail.blocks.CharBlock', (), {'help_text': "If left blank, the image's global alt text will be used.", 'required': False}), 8: ('wagtail_feathers.blocks.ThemeVariantChooserBlock', (), {'component_type': 'image', 'default': 'default', 'help_text': 'Select a theme variant for this component', 'label': 'Theme variant', 'required': False}), 9: ('wagtail.blocks.StructBlock', [[('fluid', 0), ('image', 6), ('image_alt_text', 7), ('theme_variant', 8)]], {'label': 'Image', 'required': False}), 10: ('wagtail.blocks.CharBlock', (), {'help_text': 'Optional id for the hero section style', 'max_length': 50, 'required': False}), 11: ('wagtail.blocks.RichTextBlock', (), {'help_text': 'Main headline for the hero section (max 120 characters)', 'max_length': 120}), 12: ('wagtail.blocks.CharBlock', (), {'help_text': 'Optional subheadline or tagline (max 200 characters)', 'max_length': 200, 'required': False}), 13: ('wagtail.blocks.RichTextBlock', (), {'features': ['bold', 'italic', 'link'], 'help_text': 'Optional description text with basic formatting', 'required': False}), 14: ('wagtail.images.blocks.ImageChooserBlock', (), {'help_text': 'Background image for the hero section', 'required': False}), 15: ('wagtail.blocks.CharBlock', (), {'help_text': 'Alt text for background image (for accessibility)', 'max_length': 100, 'required': False}), 16: ('wagtail.blocks.CharBlock', (), {'help_text': 'Button text', 'max_length': 50}), 17: ('wagtail.blocks.PageChooserBlock', (), {'required': False}), 18: ('wagtail.documents.blocks.DocumentChooserBlock', (), {'required': False}), 19: ('wagtail.blocks.CharBlock', (), {'help_text': "Leave blank to use link's title.", 'required': False}), 20: ('wagtail.blocks.StructBlock', [[('page', 17), ('document', 18), ('title', 19)]], {}), 21: ('wagtail.blocks.URLBlock', (), {}), 22: ('wagtail.blocks.CharBlock', (), {'required': False}), 23: ('wagtail.blocks.BooleanBlock', (), {'help_text': 'Open the link in a new tab', 'required': False}), 24: ('wagtail.blocks.StructBlock', [[('link', 21), ('title', 22), ('link_target', 23)]], {}), 25: ('wagtail.blocks.StreamBlock', [[('internal', 20), ('external', 24)]], {'max_num': 1}), 26: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('primary', 'Primary'), ('secondary', 'Secondary'), ('outline', 'Outline')], 'help_text': 'Button style'}), 27: ('wagtail.blocks.StructBlock', [[('text', 16), ('link', 25), ('style', 26)]], {'label': 'Call-to-Action Button'}), 28: ('wagtail.blocks.StreamBlock', [[('cta', 27)]], {'help_text': 'Add up to 3 call-to-action buttons', 'label': 'Call-to-Action Buttons', 'max_num': 3, 'required': False}), 29: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('0', 'No overlay'), ('25', 'Light overlay (25%)'), ('50', 'Medium overlay (50%)'), ('75', 'Dark overlay (75%)'), ('85', 'Darker overlay (85%)')], 'help_text': 'Overlay opacity for better text readability over background image', 'required': False}), 30: ('wagtail_feathers.blocks.ThemeVariantChooserBlock', (), {'component_type': 'hero', 'default': 'default', 'help_text': 'Select a theme variant for this component', 'label': 'Theme variant', 'required': False}), 31: ('wagtail.blocks.StructBlock', [[('style_id', 10), ('heading', 11), ('sub_heading', 12), ('description', 13), ('background_image', 14), ('background_image_alt', 15), ('call_to_actions', 28), ('fluid', 0), ('alignment', 3), ('overlay_opacity', 29), ('theme_variant', 30)]], {'label': 'Hero Section', 'required': False}), 32: ('wagtail.blocks.CharBlock', (), {'help_text': 'Call-to-action heading', 'max_length': 100}), 33: ('wagtail.blocks.RichTextBlock', (), {'features': ['bold', 'italic'], 'help_text': 'Supporting text for the call-to-action', 'required': False}), 34: ('wagtail.blocks.CharBlock', (), {'help_text': 'Text for the action button', 'max_length': 50}), 35: ('wagtail.blocks.StreamBlock', [[('internal', 20), ('external', 24)]], {'help_text': 'Link for the action button', 'max_num': 1}), 36: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('default', 'Default'), ('primary', 'Primary'), ('secondary', 'Secondary'), ('accent', 'Accent')], 'help_text': 'Background color theme for the CTA section'}), 37: ('wagtail_feathers.blocks.ThemeVariantChooserBlock', (), {'component_type': 'cta', 'default': 'default', 'help_text': 'Select a theme variant for this component', 'label': 'Theme variant', 'required': False}), 38: ('wagtail.blocks.StructBlock', [[('heading', 32), ('text', 33), ('button_text', 34), ('button_link', 35), ('background_color', 36), ('theme_variant', 37)]], {'label': 'Call to Action', 'required': False})}, help_text='Page header blocks.')),
                ('bio', wagtail.fields.RichTextField(blank=True, help_text='Author biography and background')),
                ('email', models.EmailField(blank=True, help_text='Public contact email', max_length=254)),
                ('website', models.URLField(blank=True, help_text='Personal website or portfolio')),
                ('twitter_handle', models.CharField(blank=True, help_text='Twitter handle (without @)', max_length=50)),
                ('linkedin_url', models.URLField(blank=True)),
                ('specialties', wagtail.fields.RichTextField(blank=True, help_text='Areas of expertise and specialization')),
                ('profile_image', models.ForeignKey(blank=True, help_text='Author profile photo', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image')),
            ],
            options={
                'verbose_name': 'Author Page',
            },
            bases=('wagtail_feathers.featherbasepage',),
        ),
        migrations.CreateModel(
            name='ContactFormField',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('sort_order', models.IntegerField(blank=True, editable=False, null=True)),
                ('clean_name', models.CharField(blank=True, default='', help_text='Safe name of the form field, the label converted to ascii_snake_case', max_length=255, verbose_name='name')),
                ('label', models.CharField(help_text='The label of the form field', max_length=255, verbose_name='label')),
                ('field_type', models.CharField(choices=[('singleline', 'Single line text'), ('multiline', 'Multi-line text'), ('email', 'Email'), ('number', 'Number'), ('url', 'URL'), ('checkbox', 'Checkbox'), ('checkboxes', 'Checkboxes'), ('dropdown', 'Drop down'), ('multiselect', 'Multiple select'), ('radio', 'Radio buttons'), ('date', 'Date'), ('datetime', 'Date/time'), ('hidden', 'Hidden field')], max_length=16, verbose_name='field type')),
                ('required', models.BooleanField(default=True, verbose_name='required')),
                ('choices', models.TextField(blank=True, help_text='Comma or new line separated list of choices. Only applicable in checkboxes, radio and dropdown.', verbose_name='choices')),
                ('default_value', models.TextField(blank=True, help_text='Default value. Comma or new line separated values supported for checkboxes.', verbose_name='default value')),
                ('help_text', models.CharField(blank=True, max_length=255, verbose_name='help text')),
                ('page', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='form_fields', to='showcase.contactpage')),
            ],
            options={
                'ordering': ['sort_order'],
                'abstract': False,
            },
        ),
    ]
