picata 0.0.1__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. LICENSE.md +24 -0
  2. README.md +59 -0
  3. components/HelloWorld.tsx +11 -0
  4. entrypoint.tsx +268 -0
  5. manage.py +15 -0
  6. picata/__init__.py +1 -0
  7. picata/apps.py +33 -0
  8. picata/blocks.py +175 -0
  9. picata/helpers/__init__.py +70 -0
  10. picata/helpers/wagtail.py +61 -0
  11. picata/log_utils.py +47 -0
  12. picata/middleware.py +54 -0
  13. picata/migrations/0001_initial.py +264 -0
  14. picata/migrations/0002_alter_article_content_alter_basicpage_content.py +112 -0
  15. picata/migrations/0003_alter_article_content_alter_basicpage_content.py +104 -0
  16. picata/migrations/0004_alter_article_content_alter_basicpage_content.py +105 -0
  17. picata/migrations/0005_socialsettings.py +48 -0
  18. picata/migrations/0006_alter_article_content.py +71 -0
  19. picata/migrations/0007_splitviewpage.py +69 -0
  20. picata/migrations/0008_alter_splitviewpage_content.py +96 -0
  21. picata/migrations/0009_alter_splitviewpage_content.py +111 -0
  22. picata/migrations/0010_alter_splitviewpage_content.py +105 -0
  23. picata/migrations/0011_alter_splitviewpage_options_and_more.py +113 -0
  24. picata/migrations/0012_alter_splitviewpage_content.py +109 -0
  25. picata/migrations/0013_alter_article_content.py +43 -0
  26. picata/migrations/0014_alter_article_content_alter_article_summary.py +24 -0
  27. picata/migrations/0015_alter_article_options_article_tagline_and_more.py +28 -0
  28. picata/migrations/0016_alter_article_options_alter_articletag_options_and_more.py +33 -0
  29. picata/migrations/0017_articletagrelation_alter_article_tags_and_more.py +35 -0
  30. picata/migrations/0018_rename_articletag_pagetag_and_more.py +21 -0
  31. picata/migrations/0019_rename_name_plural_articletype__name_plural.py +18 -0
  32. picata/migrations/0020_rename__name_plural_articletype__pluralised_name.py +18 -0
  33. picata/migrations/0021_rename_article_type_article_page_type.py +18 -0
  34. picata/migrations/0022_homepage.py +28 -0
  35. picata/migrations/__init__.py +0 -0
  36. picata/models.py +486 -0
  37. picata/settings/__init__.py +1 -0
  38. picata/settings/base.py +345 -0
  39. picata/settings/dev.py +94 -0
  40. picata/settings/mypy.py +7 -0
  41. picata/settings/prod.py +12 -0
  42. picata/settings/test.py +6 -0
  43. picata/static/picata/ada-profile.jpg +0 -0
  44. picata/static/picata/ada-social-bear.jpg +0 -0
  45. picata/static/picata/favicon.ico +0 -0
  46. picata/static/picata/fonts/Bitter-Light.ttf +0 -0
  47. picata/static/picata/fonts/Bitter-LightItalic.ttf +0 -0
  48. picata/static/picata/fonts/FiraCode-Light.ttf +0 -0
  49. picata/static/picata/fonts/FiraCode-SemiBold.ttf +0 -0
  50. picata/static/picata/fonts/Sacramento-Regular.ttf +0 -0
  51. picata/static/picata/fonts/ZillaSlab-Bold.ttf +0 -0
  52. picata/static/picata/fonts/ZillaSlab-BoldItalic.ttf +0 -0
  53. picata/static/picata/fonts/ZillaSlab-Light.ttf +0 -0
  54. picata/static/picata/fonts/ZillaSlab-LightItalic.ttf +0 -0
  55. picata/static/picata/fonts/ZillaSlabHighlight-Bold.ttf +0 -0
  56. picata/static/picata/icons.svg +56 -0
  57. picata/templates/picata/3_column.html +28 -0
  58. picata/templates/picata/404.html +11 -0
  59. picata/templates/picata/500.html +13 -0
  60. picata/templates/picata/_post_list.html +24 -0
  61. picata/templates/picata/article.html +20 -0
  62. picata/templates/picata/base.html +135 -0
  63. picata/templates/picata/basic_page.html +10 -0
  64. picata/templates/picata/blocks/icon_link_item.html +7 -0
  65. picata/templates/picata/blocks/icon_link_list.html +4 -0
  66. picata/templates/picata/blocks/icon_link_list_stream.html +3 -0
  67. picata/templates/picata/dl_view.html +18 -0
  68. picata/templates/picata/home_page.html +21 -0
  69. picata/templates/picata/post_listing.html +17 -0
  70. picata/templates/picata/previews/3col.html +73 -0
  71. picata/templates/picata/previews/dl.html +10 -0
  72. picata/templates/picata/previews/split.html +10 -0
  73. picata/templates/picata/previews/theme_gallery.html +158 -0
  74. picata/templates/picata/search_results.html +28 -0
  75. picata/templates/picata/split_view.html +15 -0
  76. picata/templates/picata/tags/site_menu.html +8 -0
  77. picata/templatetags/__init__.py +1 -0
  78. picata/templatetags/absolute_static.py +15 -0
  79. picata/templatetags/menu_tags.py +42 -0
  80. picata/templatetags/stringify.py +23 -0
  81. picata/transformers.py +60 -0
  82. picata/typing/__init__.py +19 -0
  83. picata/typing/wagtail.py +31 -0
  84. picata/urls.py +48 -0
  85. picata/validators.py +36 -0
  86. picata/views.py +80 -0
  87. picata/wagtail_hooks.py +43 -0
  88. picata/wsgi.py +15 -0
  89. picata-0.0.1.dist-info/METADATA +87 -0
  90. picata-0.0.1.dist-info/RECORD +94 -0
  91. picata-0.0.1.dist-info/WHEEL +4 -0
  92. picata-0.0.1.dist-info/licenses/LICENSE.md +24 -0
  93. pygments.sass +382 -0
  94. styles.sass +300 -0
@@ -0,0 +1,105 @@
1
+ # Generated by Django 5.1.4 on 2024-12-19 22:23
2
+
3
+ import wagtail.fields
4
+ from django.db import migrations
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+ dependencies = [
9
+ ("hpk", "0003_alter_article_content_alter_basicpage_content"),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AlterField(
14
+ model_name="article",
15
+ name="content",
16
+ field=wagtail.fields.StreamField(
17
+ [("section", 5), ("code", 8), ("image", 3)],
18
+ blank=True,
19
+ block_lookup={
20
+ 0: (
21
+ "wagtail.blocks.CharBlock",
22
+ (),
23
+ {
24
+ "help_text": 'Heading for this section, included in "page contents".',
25
+ "required": True,
26
+ },
27
+ ),
28
+ 1: (
29
+ "wagtail.blocks.IntegerBlock",
30
+ (),
31
+ {
32
+ "help_text": "Heading level",
33
+ "max_value": 6,
34
+ "min_value": 1,
35
+ "required": True,
36
+ },
37
+ ),
38
+ 2: (
39
+ "wagtail.blocks.RichTextBlock",
40
+ (),
41
+ {"features": ["bold", "italic", "link", "ul", "ol", "document-link"]},
42
+ ),
43
+ 3: ("wagtail.images.blocks.ImageChooserBlock", (), {}),
44
+ 4: (
45
+ "wagtail.blocks.StreamBlock",
46
+ [[("rich_text", 2), ("image", 3)]],
47
+ {"help_text": None, "required": False},
48
+ ),
49
+ 5: (
50
+ "wagtail.blocks.StructBlock",
51
+ [[("heading", 0), ("level", 1), ("content", 4)]],
52
+ {},
53
+ ),
54
+ 6: ("wagtail.blocks.TextBlock", (), {"help_text": None, "required": True}),
55
+ 7: (
56
+ "wagtail.blocks.ChoiceBlock",
57
+ [],
58
+ {
59
+ "choices": [
60
+ ("python", "Python"),
61
+ ("javascript", "JavaScript"),
62
+ ("html", "HTML"),
63
+ ("css", "CSS"),
64
+ ("bash", "Bash"),
65
+ ("plaintext", "Plain Text"),
66
+ ],
67
+ "required": False,
68
+ },
69
+ ),
70
+ 8: ("wagtail.blocks.StructBlock", [[("code", 6), ("language", 7)]], {}),
71
+ },
72
+ help_text="Main content for the article.",
73
+ ),
74
+ ),
75
+ migrations.AlterField(
76
+ model_name="basicpage",
77
+ name="content",
78
+ field=wagtail.fields.StreamField(
79
+ [("rich_text", 0), ("code", 3), ("image", 4)],
80
+ blank=True,
81
+ block_lookup={
82
+ 0: ("wagtail.blocks.RichTextBlock", (), {}),
83
+ 1: ("wagtail.blocks.TextBlock", (), {"help_text": None, "required": True}),
84
+ 2: (
85
+ "wagtail.blocks.ChoiceBlock",
86
+ [],
87
+ {
88
+ "choices": [
89
+ ("python", "Python"),
90
+ ("javascript", "JavaScript"),
91
+ ("html", "HTML"),
92
+ ("css", "CSS"),
93
+ ("bash", "Bash"),
94
+ ("plaintext", "Plain Text"),
95
+ ],
96
+ "required": False,
97
+ },
98
+ ),
99
+ 3: ("wagtail.blocks.StructBlock", [[("code", 1), ("language", 2)]], {}),
100
+ 4: ("wagtail.images.blocks.ImageChooserBlock", (), {}),
101
+ },
102
+ help_text="Main content for the page.",
103
+ ),
104
+ ),
105
+ ]
@@ -0,0 +1,48 @@
1
+ # Generated by Django 5.1.4 on 2024-12-22 02:48
2
+
3
+ import django.db.models.deletion
4
+ from django.db import migrations, models
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+ dependencies = [
9
+ ("hpk", "0004_alter_article_content_alter_basicpage_content"),
10
+ ("wagtailcore", "0094_alter_page_locale"),
11
+ ("wagtailimages", "0027_image_description"),
12
+ ]
13
+
14
+ operations = [
15
+ migrations.CreateModel(
16
+ name="SocialSettings",
17
+ fields=[
18
+ (
19
+ "id",
20
+ models.BigAutoField(
21
+ auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
22
+ ),
23
+ ),
24
+ (
25
+ "default_social_image",
26
+ models.ForeignKey(
27
+ blank=True,
28
+ help_text="Default image for social media previews.",
29
+ null=True,
30
+ on_delete=django.db.models.deletion.SET_NULL,
31
+ related_name="+",
32
+ to="wagtailimages.image",
33
+ ),
34
+ ),
35
+ (
36
+ "site",
37
+ models.OneToOneField(
38
+ editable=False,
39
+ on_delete=django.db.models.deletion.CASCADE,
40
+ to="wagtailcore.site",
41
+ ),
42
+ ),
43
+ ],
44
+ options={
45
+ "abstract": False,
46
+ },
47
+ ),
48
+ ]
@@ -0,0 +1,71 @@
1
+ # Generated by Django 5.1.4 on 2024-12-22 08:58
2
+
3
+ import wagtail.fields
4
+ from django.db import migrations
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+ dependencies = [
9
+ ("hpk", "0005_socialsettings"),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AlterField(
14
+ model_name="article",
15
+ name="content",
16
+ field=wagtail.fields.StreamField(
17
+ [("section", 5), ("code", 8), ("image", 3)],
18
+ blank=True,
19
+ block_lookup={
20
+ 0: (
21
+ "wagtail.blocks.CharBlock",
22
+ (),
23
+ {
24
+ "help_text": 'Heading for this section, included in "page contents".',
25
+ "required": True,
26
+ },
27
+ ),
28
+ 1: (
29
+ "wagtail.blocks.IntegerBlock",
30
+ (),
31
+ {
32
+ "help_text": "Heading level",
33
+ "max_value": 6,
34
+ "min_value": 1,
35
+ "required": True,
36
+ },
37
+ ),
38
+ 2: ("wagtail.blocks.RichTextBlock", (), {}),
39
+ 3: ("wagtail.images.blocks.ImageChooserBlock", (), {}),
40
+ 4: (
41
+ "wagtail.blocks.StreamBlock",
42
+ [[("rich_text", 2), ("image", 3)]],
43
+ {"help_text": None, "required": False},
44
+ ),
45
+ 5: (
46
+ "wagtail.blocks.StructBlock",
47
+ [[("heading", 0), ("level", 1), ("content", 4)]],
48
+ {},
49
+ ),
50
+ 6: ("wagtail.blocks.TextBlock", (), {"help_text": None, "required": True}),
51
+ 7: (
52
+ "wagtail.blocks.ChoiceBlock",
53
+ [],
54
+ {
55
+ "choices": [
56
+ ("python", "Python"),
57
+ ("javascript", "JavaScript"),
58
+ ("html", "HTML"),
59
+ ("css", "CSS"),
60
+ ("bash", "Bash"),
61
+ ("plaintext", "Plain Text"),
62
+ ],
63
+ "required": False,
64
+ },
65
+ ),
66
+ 8: ("wagtail.blocks.StructBlock", [[("code", 6), ("language", 7)]], {}),
67
+ },
68
+ help_text="Main content for the article.",
69
+ ),
70
+ ),
71
+ ]
@@ -0,0 +1,69 @@
1
+ # Generated by Django 5.1.4 on 2025-01-01 04:38
2
+
3
+ import django.db.models.deletion
4
+ import wagtail.fields
5
+ from django.db import migrations, models
6
+
7
+
8
+ class Migration(migrations.Migration):
9
+ dependencies = [
10
+ ("hpk", "0006_alter_article_content"),
11
+ ("wagtailcore", "0094_alter_page_locale"),
12
+ ]
13
+
14
+ operations = [
15
+ migrations.CreateModel(
16
+ name="SplitViewPage",
17
+ fields=[
18
+ (
19
+ "page_ptr",
20
+ models.OneToOneField(
21
+ auto_created=True,
22
+ on_delete=django.db.models.deletion.CASCADE,
23
+ parent_link=True,
24
+ primary_key=True,
25
+ serialize=False,
26
+ to="wagtailcore.page",
27
+ ),
28
+ ),
29
+ (
30
+ "content",
31
+ wagtail.fields.StreamField(
32
+ [("rich_text", 0), ("code", 3), ("image", 4)],
33
+ blank=True,
34
+ block_lookup={
35
+ 0: ("wagtail.blocks.RichTextBlock", (), {}),
36
+ 1: (
37
+ "wagtail.blocks.TextBlock",
38
+ (),
39
+ {"help_text": None, "required": True},
40
+ ),
41
+ 2: (
42
+ "wagtail.blocks.ChoiceBlock",
43
+ [],
44
+ {
45
+ "choices": [
46
+ ("python", "Python"),
47
+ ("javascript", "JavaScript"),
48
+ ("html", "HTML"),
49
+ ("css", "CSS"),
50
+ ("bash", "Bash"),
51
+ ("plaintext", "Plain Text"),
52
+ ],
53
+ "required": False,
54
+ },
55
+ ),
56
+ 3: ("wagtail.blocks.StructBlock", [[("code", 1), ("language", 2)]], {}),
57
+ 4: ("hpk.blocks.WrappedImageChooserBlock", (), {}),
58
+ },
59
+ help_text="Main content for the split-view page.",
60
+ ),
61
+ ),
62
+ ],
63
+ options={
64
+ "verbose_name": "Split-view Page",
65
+ "verbose_name_plural": "Split-view Pages",
66
+ },
67
+ bases=("wagtailcore.page",),
68
+ ),
69
+ ]
@@ -0,0 +1,96 @@
1
+ # Generated by Django 5.1.4 on 2025-01-03 02:40
2
+
3
+ import wagtail.fields
4
+ from django.db import migrations
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+ dependencies = [
9
+ ("hpk", "0007_splitviewpage"),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AlterField(
14
+ model_name="splitviewpage",
15
+ name="content",
16
+ field=wagtail.fields.StreamField(
17
+ [("rich_text", 0), ("code", 3), ("image", 4), ("social_links", 12)],
18
+ blank=True,
19
+ block_lookup={
20
+ 0: ("wagtail.blocks.RichTextBlock", (), {}),
21
+ 1: ("wagtail.blocks.TextBlock", (), {"help_text": None, "required": True}),
22
+ 2: (
23
+ "wagtail.blocks.ChoiceBlock",
24
+ [],
25
+ {
26
+ "choices": [
27
+ ("python", "Python"),
28
+ ("javascript", "JavaScript"),
29
+ ("html", "HTML"),
30
+ ("css", "CSS"),
31
+ ("bash", "Bash"),
32
+ ("plaintext", "Plain Text"),
33
+ ],
34
+ "required": False,
35
+ },
36
+ ),
37
+ 3: ("wagtail.blocks.StructBlock", [[("code", 1), ("language", 2)]], {}),
38
+ 4: ("hpk.blocks.WrappedImageChooserBlock", (), {}),
39
+ 5: (
40
+ "wagtail.blocks.CharBlock",
41
+ (),
42
+ {
43
+ "help_text": "Optional heading for this list (e.g., Social Links).",
44
+ "required": False,
45
+ },
46
+ ),
47
+ 6: (
48
+ "wagtail.blocks.IntegerBlock",
49
+ (),
50
+ {
51
+ "default": 2,
52
+ "help_text": "Heading level for the list (1-6).",
53
+ "max_value": 6,
54
+ "min_value": 1,
55
+ "required": False,
56
+ },
57
+ ),
58
+ 7: (
59
+ "wagtail.blocks.URLBlock",
60
+ (),
61
+ {"help_text": "The URL to link to.", "required": False},
62
+ ),
63
+ 8: (
64
+ "wagtail.blocks.CharBlock",
65
+ (),
66
+ {
67
+ "help_text": "The title for the list item.",
68
+ "max_length": 50,
69
+ "required": True,
70
+ },
71
+ ),
72
+ 9: (
73
+ "wagtail.blocks.CharBlock",
74
+ (),
75
+ {
76
+ "help_text": "The static path to the SVG icon, relative to the static directory (e.g., 'svgs/github.svg').",
77
+ "max_length": 255,
78
+ "required": False,
79
+ },
80
+ ),
81
+ 10: (
82
+ "wagtail.blocks.StructBlock",
83
+ [[("url", 7), ("label", 8), ("icon", 9)]],
84
+ {},
85
+ ),
86
+ 11: ("wagtail.blocks.ListBlock", (10,), {"help_text": "The list of items."}),
87
+ 12: (
88
+ "wagtail.blocks.StructBlock",
89
+ [[("heading", 5), ("heading_level", 6), ("items", 11)]],
90
+ {},
91
+ ),
92
+ },
93
+ help_text="Main content for the split-view page.",
94
+ ),
95
+ ),
96
+ ]
@@ -0,0 +1,111 @@
1
+ # Generated by Django 5.1.4 on 2025-01-03 03:04
2
+
3
+ import wagtail.fields
4
+ from django.db import migrations
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+ dependencies = [
9
+ ("hpk", "0008_alter_splitviewpage_content"),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AlterField(
14
+ model_name="splitviewpage",
15
+ name="content",
16
+ field=wagtail.fields.StreamField(
17
+ [
18
+ ("rich_text", 0),
19
+ ("code", 3),
20
+ ("image", 4),
21
+ ("social_links", 12),
22
+ ("icon_link_lists", 14),
23
+ ],
24
+ blank=True,
25
+ block_lookup={
26
+ 0: ("wagtail.blocks.RichTextBlock", (), {}),
27
+ 1: ("wagtail.blocks.TextBlock", (), {"help_text": None, "required": True}),
28
+ 2: (
29
+ "wagtail.blocks.ChoiceBlock",
30
+ [],
31
+ {
32
+ "choices": [
33
+ ("python", "Python"),
34
+ ("javascript", "JavaScript"),
35
+ ("html", "HTML"),
36
+ ("css", "CSS"),
37
+ ("bash", "Bash"),
38
+ ("plaintext", "Plain Text"),
39
+ ],
40
+ "required": False,
41
+ },
42
+ ),
43
+ 3: ("wagtail.blocks.StructBlock", [[("code", 1), ("language", 2)]], {}),
44
+ 4: ("hpk.blocks.WrappedImageChooserBlock", (), {}),
45
+ 5: (
46
+ "wagtail.blocks.CharBlock",
47
+ (),
48
+ {
49
+ "help_text": "Optional heading for this list (e.g., Social Links).",
50
+ "required": False,
51
+ },
52
+ ),
53
+ 6: (
54
+ "wagtail.blocks.IntegerBlock",
55
+ (),
56
+ {
57
+ "default": 2,
58
+ "help_text": "Heading level for the list (1-6).",
59
+ "max_value": 6,
60
+ "min_value": 1,
61
+ "required": False,
62
+ },
63
+ ),
64
+ 7: (
65
+ "wagtail.blocks.URLBlock",
66
+ (),
67
+ {"help_text": "The URL to link to.", "required": False},
68
+ ),
69
+ 8: (
70
+ "wagtail.blocks.CharBlock",
71
+ (),
72
+ {
73
+ "help_text": "The title for the list item.",
74
+ "max_length": 50,
75
+ "required": True,
76
+ },
77
+ ),
78
+ 9: (
79
+ "wagtail.blocks.CharBlock",
80
+ (),
81
+ {
82
+ "help_text": "The static path to the SVG icon, relative to the static directory (e.g., 'svgs/github.svg').",
83
+ "max_length": 255,
84
+ "required": False,
85
+ },
86
+ ),
87
+ 10: (
88
+ "wagtail.blocks.StructBlock",
89
+ [[("url", 7), ("label", 8), ("icon", 9)]],
90
+ {},
91
+ ),
92
+ 11: ("wagtail.blocks.ListBlock", (10,), {"help_text": "The list of items."}),
93
+ 12: (
94
+ "wagtail.blocks.StructBlock",
95
+ [[("heading", 5), ("heading_level", 6), ("items", 11)]],
96
+ {},
97
+ ),
98
+ 13: (
99
+ "wagtail.blocks.StreamBlock",
100
+ [[("link_list", 12)]],
101
+ {
102
+ "help_text": "Add one or more heading-and-link-list blocks.",
103
+ "required": False,
104
+ },
105
+ ),
106
+ 14: ("wagtail.blocks.StructBlock", [[("lists", 13)]], {}),
107
+ },
108
+ help_text="Main content for the split-view page.",
109
+ ),
110
+ ),
111
+ ]
@@ -0,0 +1,105 @@
1
+ # Generated by Django 5.1.4 on 2025-01-03 03:50
2
+
3
+ import wagtail.fields
4
+ from django.db import migrations
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+ dependencies = [
9
+ ("hpk", "0009_alter_splitviewpage_content"),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AlterField(
14
+ model_name="splitviewpage",
15
+ name="content",
16
+ field=wagtail.fields.StreamField(
17
+ [("rich_text", 0), ("code", 3), ("image", 4), ("icon_link_lists", 14)],
18
+ blank=True,
19
+ block_lookup={
20
+ 0: ("wagtail.blocks.RichTextBlock", (), {}),
21
+ 1: ("wagtail.blocks.TextBlock", (), {"help_text": None, "required": True}),
22
+ 2: (
23
+ "wagtail.blocks.ChoiceBlock",
24
+ [],
25
+ {
26
+ "choices": [
27
+ ("python", "Python"),
28
+ ("javascript", "JavaScript"),
29
+ ("html", "HTML"),
30
+ ("css", "CSS"),
31
+ ("bash", "Bash"),
32
+ ("plaintext", "Plain Text"),
33
+ ],
34
+ "required": False,
35
+ },
36
+ ),
37
+ 3: ("wagtail.blocks.StructBlock", [[("code", 1), ("language", 2)]], {}),
38
+ 4: ("hpk.blocks.WrappedImageChooserBlock", (), {}),
39
+ 5: (
40
+ "wagtail.blocks.CharBlock",
41
+ (),
42
+ {
43
+ "help_text": "Optional heading for this list (e.g., Social Links).",
44
+ "required": False,
45
+ },
46
+ ),
47
+ 6: (
48
+ "wagtail.blocks.IntegerBlock",
49
+ (),
50
+ {
51
+ "default": 2,
52
+ "help_text": "Heading level for the list (1-6).",
53
+ "max_value": 6,
54
+ "min_value": 1,
55
+ "required": False,
56
+ },
57
+ ),
58
+ 7: (
59
+ "wagtail.blocks.URLBlock",
60
+ (),
61
+ {"help_text": "The URL to link to.", "required": False},
62
+ ),
63
+ 8: (
64
+ "wagtail.blocks.CharBlock",
65
+ (),
66
+ {
67
+ "help_text": "The title for the list item.",
68
+ "max_length": 50,
69
+ "required": True,
70
+ },
71
+ ),
72
+ 9: (
73
+ "wagtail.blocks.CharBlock",
74
+ (),
75
+ {
76
+ "help_text": "The static path to the SVG icon, relative to the static directory (e.g., 'svgs/github.svg').",
77
+ "max_length": 255,
78
+ "required": False,
79
+ },
80
+ ),
81
+ 10: (
82
+ "wagtail.blocks.StructBlock",
83
+ [[("url", 7), ("label", 8), ("icon", 9)]],
84
+ {},
85
+ ),
86
+ 11: ("wagtail.blocks.ListBlock", (10,), {"help_text": "The list of items."}),
87
+ 12: (
88
+ "wagtail.blocks.StructBlock",
89
+ [[("heading", 5), ("heading_level", 6), ("items", 11)]],
90
+ {},
91
+ ),
92
+ 13: (
93
+ "wagtail.blocks.StreamBlock",
94
+ [[("link_list", 12)]],
95
+ {
96
+ "help_text": "Add one or more heading-and-link-list blocks.",
97
+ "required": False,
98
+ },
99
+ ),
100
+ 14: ("wagtail.blocks.StructBlock", [[("lists", 13)]], {}),
101
+ },
102
+ help_text="Main content for the split-view page.",
103
+ ),
104
+ ),
105
+ ]