wagtail-tw-blocks 0.3.1__py3-none-any.whl → 1.0.0__py3-none-any.whl
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.
- wagtail_blocks/__init__.py +6 -70
- wagtail_blocks/blocks.py +157 -536
- wagtail_blocks/constants.py +60 -0
- wagtail_blocks/static/wagtail_blocks/css/app.css +18 -2
- wagtail_blocks/static/wagtail_blocks/css/styles.css +2 -2
- wagtail_blocks/static/wagtail_blocks/package-lock.json +251 -420
- wagtail_blocks/static/wagtail_blocks/package.json +3 -3
- wagtail_blocks/templates/wagtail/blocks/accordion.html +21 -0
- wagtail_blocks/templates/wagtail/blocks/alert.html +12 -0
- wagtail_blocks/templates/wagtail/blocks/carousel.html +19 -0
- wagtail_blocks/templates/wagtail/blocks/code.html +32 -0
- wagtail_blocks/templates/{wagtail_blocks → wagtail}/blocks/diff.html +3 -3
- wagtail_blocks/templates/wagtail/blocks/document.html +65 -0
- wagtail_blocks/templates/wagtail/blocks/hover_gallery.html +11 -0
- wagtail_blocks/templates/wagtail/blocks/tabs.html +20 -0
- wagtail_blocks/templates/wagtail/components/breadcrumbs.html +12 -0
- wagtail_blocks/templates/wagtail/components/form.html +116 -0
- wagtail_blocks/templates/wagtail/components/languages.html +77 -0
- wagtail_blocks/templates/wagtail/components/messages.html +56 -0
- wagtail_blocks/templates/wagtail/components/next.html +22 -0
- wagtail_blocks/templates/wagtail/components/pagination.html +59 -0
- wagtail_blocks/templates/wagtail/components/prev.html +25 -0
- wagtail_blocks/templates/wagtail/components/prev_next.html +5 -0
- wagtail_blocks/templates/wagtail/components/themes.html +366 -0
- wagtail_blocks/templates/wagtail/components/tree.html +28 -0
- wagtail_blocks/templates/wagtail/styles.html +29 -0
- wagtail_tw_blocks-1.0.0.dist-info/METADATA +451 -0
- wagtail_tw_blocks-1.0.0.dist-info/RECORD +39 -0
- {wagtail_tw_blocks-0.3.1.dist-info → wagtail_tw_blocks-1.0.0.dist-info}/WHEEL +1 -1
- wagtail_blocks/templates/wagtail_blocks/blocks/accordion.html +0 -49
- wagtail_blocks/templates/wagtail_blocks/blocks/alert.html +0 -24
- wagtail_blocks/templates/wagtail_blocks/blocks/browser.html +0 -15
- wagtail_blocks/templates/wagtail_blocks/blocks/carousel.html +0 -64
- wagtail_blocks/templates/wagtail_blocks/blocks/code.html +0 -66
- wagtail_blocks/templates/wagtail_blocks/blocks/code_mockup.html +0 -20
- wagtail_blocks/templates/wagtail_blocks/blocks/fab.html +0 -43
- wagtail_blocks/templates/wagtail_blocks/blocks/hover_gallery.html +0 -18
- wagtail_blocks/templates/wagtail_blocks/blocks/image.html +0 -19
- wagtail_blocks/templates/wagtail_blocks/blocks/list.html +0 -56
- wagtail_blocks/templates/wagtail_blocks/blocks/phone.html +0 -11
- wagtail_blocks/templates/wagtail_blocks/blocks/steps.html +0 -12
- wagtail_blocks/templates/wagtail_blocks/blocks/tabs.html +0 -24
- wagtail_blocks/templates/wagtail_blocks/blocks/timeline.html +0 -30
- wagtail_blocks/templates/wagtail_blocks/blocks/toast.html +0 -9
- wagtail_blocks/templates/wagtail_blocks/blocks/window.html +0 -9
- wagtail_blocks/templates/wagtail_blocks/styles.html +0 -92
- wagtail_tw_blocks-0.3.1.dist-info/METADATA +0 -237
- wagtail_tw_blocks-0.3.1.dist-info/RECORD +0 -37
- {wagtail_tw_blocks-0.3.1.dist-info → wagtail_tw_blocks-1.0.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"dependencies": {
|
|
3
|
-
"@tailwindcss/cli": "^4.1.
|
|
4
|
-
"tailwindcss": "^4.1.
|
|
3
|
+
"@tailwindcss/cli": "^4.1.18",
|
|
4
|
+
"tailwindcss": "^4.1.18"
|
|
5
5
|
},
|
|
6
6
|
"devDependencies": {
|
|
7
7
|
"@tailwindcss/typography": "^0.5.16",
|
|
8
|
-
"daisyui": "^5.5.
|
|
8
|
+
"daisyui": "^5.5.14",
|
|
9
9
|
"prettier": "^3.6.2",
|
|
10
10
|
"prettier-plugin-tailwindcss": "^0.6.14"
|
|
11
11
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{% load wagtailcore_tags %}
|
|
2
|
+
|
|
3
|
+
<div class="my-4 not-prose">
|
|
4
|
+
<ol class="grid gap-4">
|
|
5
|
+
{% for item in self.items %}
|
|
6
|
+
<li
|
|
7
|
+
class="collapse {% if self.style %}collapse-{{ self.style }}{% endif %} bg-base-100 rounded-box border-base-300 border"
|
|
8
|
+
>
|
|
9
|
+
<input type="radio" name="{{ name }}" />
|
|
10
|
+
|
|
11
|
+
<div class="collapse-title font-bold">
|
|
12
|
+
<span class="flex items-center gap-2">{{ item.title }}</span>
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<div class="collapse-content">
|
|
16
|
+
<div>{{ item.content|richtext }}</div>
|
|
17
|
+
</div>
|
|
18
|
+
</li>
|
|
19
|
+
{% endfor %}
|
|
20
|
+
</ol>
|
|
21
|
+
</div>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{% load wagtailcore_tags %}
|
|
2
|
+
|
|
3
|
+
<div class="my-4 not-prose">
|
|
4
|
+
<div
|
|
5
|
+
role="alert"
|
|
6
|
+
class="alert alert-vertical {% if self.style %}alert-{{ self.style }}{% endif %} alert-{{ self.level }} md:alert-horizontal"
|
|
7
|
+
>
|
|
8
|
+
<i data-lucide="{{ icon }}" class="size-4 lg:size-6"></i>
|
|
9
|
+
|
|
10
|
+
<div>{{ self.message|richtext }}</div>
|
|
11
|
+
</div>
|
|
12
|
+
</div>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{% load i18n wagtailimages_tags %}
|
|
2
|
+
|
|
3
|
+
<div class="my-4 not-prose">
|
|
4
|
+
<div class="carousel size-full rounded-box">
|
|
5
|
+
{% for item in self.items %}
|
|
6
|
+
<div class="carousel-item relative size-full">
|
|
7
|
+
<figure>{% image item fill-1920x1080 class="w-full" %}</figure>
|
|
8
|
+
|
|
9
|
+
<div class="absolute right-4 bottom-4 lg:right-8 lg:bottom-8">
|
|
10
|
+
<span
|
|
11
|
+
class="badge badge-sm badge-neutral font-bold shadow-sm lg:badge-md"
|
|
12
|
+
>
|
|
13
|
+
{{ forloop.counter }} / {{ item_count }}
|
|
14
|
+
</span>
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
17
|
+
{% endfor %}
|
|
18
|
+
</div>
|
|
19
|
+
</div>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{% load i18n %}
|
|
2
|
+
|
|
3
|
+
<div class="relative my-4">
|
|
4
|
+
<div
|
|
5
|
+
class="card card-sm card-border border-base-300 md:card-md lg:card-lg xl:card-xl"
|
|
6
|
+
>
|
|
7
|
+
<div class="absolute inset-x-0 top-0">
|
|
8
|
+
<div class="flex items-center justify-end gap-4 p-1">
|
|
9
|
+
<div class="tooltip" data-tip="{% trans 'Language' %}">
|
|
10
|
+
<span class="btn btn-sm btn-ghost lg:btn-md">
|
|
11
|
+
<span class="sr-only">{% trans 'Programming language' %}:</span>
|
|
12
|
+
{{ self.language|title }}
|
|
13
|
+
</span>
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<div class="tooltip" data-tip="{% trans 'Copy' %}">
|
|
17
|
+
<button
|
|
18
|
+
class="btn btn-sm btn-copy btn-ghost btn-square lg:btn-md"
|
|
19
|
+
data-clipboard-text="{{ self.code }}"
|
|
20
|
+
>
|
|
21
|
+
<span class="sr-only">{% trans 'Copy' %}</span>
|
|
22
|
+
<i data-lucide="copy" class="size-4 lg:size-5"></i>
|
|
23
|
+
</button>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<pre
|
|
29
|
+
class="overflow-hidden rounded-box"
|
|
30
|
+
><code class="language-{{ self.language }}">{{ self.code }}</code></pre>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{% load wagtailimages_tags %}
|
|
2
2
|
|
|
3
3
|
<div class="my-4 not-prose">
|
|
4
|
-
<figure tabindex="0" class="diff aspect-video rounded-box overflow-
|
|
5
|
-
<div class="diff-item-1
|
|
4
|
+
<figure tabindex="0" class="diff aspect-video rounded-box overflow-hidden">
|
|
5
|
+
<div class="diff-item-1" role="img" tabindex="0">
|
|
6
6
|
{% image self.item_1 fill-1920x1080 %}
|
|
7
7
|
</div>
|
|
8
|
-
<div class="diff-item-2
|
|
8
|
+
<div class="diff-item-2" role="img">
|
|
9
9
|
{% image self.item_2 fill-1920x1080 %}
|
|
10
10
|
</div>
|
|
11
11
|
<div class="diff-resizer"></div>
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{% load i18n %}
|
|
2
|
+
|
|
3
|
+
<section
|
|
4
|
+
class="tooltip w-full not-prose my-4"
|
|
5
|
+
data-tip="{% trans 'Download' %}"
|
|
6
|
+
>
|
|
7
|
+
<a
|
|
8
|
+
target="blank"
|
|
9
|
+
href="{{ self.document.url }}"
|
|
10
|
+
class="card card-sm card-border border-base-300 bg-base-100 hover:shadow-sm hover:shadow-base-300 lg:card-md xl:card-lg 2xl:card-xl"
|
|
11
|
+
>
|
|
12
|
+
<div class="relative card-body">
|
|
13
|
+
<div class="flex items-center justify-between gap-4">
|
|
14
|
+
<div class="flex items-center gap-4">
|
|
15
|
+
<div
|
|
16
|
+
class="tooltip tooltip-right rtl:tooltip-left"
|
|
17
|
+
data-tip="{{ self.document.file_extension|upper }}"
|
|
18
|
+
>
|
|
19
|
+
<i data-lucide="file" class="size-16 lg:size-32"></i>
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
<div class="grid gap-1">
|
|
23
|
+
<h1 class="card-title">{{ self.document.title }}</h1>
|
|
24
|
+
<small>{{ self.document.filename }}</small>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<span class="btn btn-sm btn-square btn-ghost lg:btn-md">
|
|
29
|
+
<i data-lucide="download" class="size-4 lg:size-6"></i>
|
|
30
|
+
<span class="sr-only">{% trans 'Download' %}</span>
|
|
31
|
+
</span>
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<div class="card-actions">
|
|
35
|
+
<div class="tooltip" data-tip="{% trans 'User' %}">
|
|
36
|
+
<span class="btn w-full btn-xs btn-ghost lg:btn-sm">
|
|
37
|
+
<i data-lucide="user" class="size-4 lg:size-6"></i>
|
|
38
|
+
<span>{{ self.document.uploaded_by_user }}</span>
|
|
39
|
+
</span>
|
|
40
|
+
</div>
|
|
41
|
+
|
|
42
|
+
<div class="tooltip" data-tip="{% trans 'Type' %}">
|
|
43
|
+
<span class="btn w-full btn-xs btn-ghost lg:btn-sm">
|
|
44
|
+
<i data-lucide="file" class="size-4 lg:size-6"></i>
|
|
45
|
+
<span>{{ self.document.file_extension|upper }}</span>
|
|
46
|
+
</span>
|
|
47
|
+
</div>
|
|
48
|
+
|
|
49
|
+
<div class="tooltip" data-tip="{% trans 'File size' %}">
|
|
50
|
+
<span class="btn w-full btn-xs btn-ghost lg:btn-sm">
|
|
51
|
+
<i data-lucide="boxes" class="size-4 lg:size-6"></i>
|
|
52
|
+
<span>{{ size }}</span>
|
|
53
|
+
</span>
|
|
54
|
+
</div>
|
|
55
|
+
|
|
56
|
+
<div class="tooltip" data-tip="{% trans 'Uploaded at' %}">
|
|
57
|
+
<time class="btn w-full btn-xs btn-ghost lg:btn-sm">
|
|
58
|
+
<i data-lucide="calendar" class="size-4 lg:size-6"></i>
|
|
59
|
+
<span>{{ self.document.created_at }}</span>
|
|
60
|
+
</time>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
</a>
|
|
65
|
+
</section>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{% load wagtailimages_tags %}
|
|
2
|
+
|
|
3
|
+
<div class="not-prose my-4">
|
|
4
|
+
<figure class="hover-gallery rounded-box overflow-clip">
|
|
5
|
+
{% for item in self.items %}
|
|
6
|
+
<!---->
|
|
7
|
+
{% image item fill-1920x1080 class="w-full" %}
|
|
8
|
+
<!---->
|
|
9
|
+
{% endfor %}
|
|
10
|
+
</figure>
|
|
11
|
+
</div>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<div class="my-4 not-prose">
|
|
2
|
+
<div
|
|
3
|
+
class="tabs tabs-xs tabs-{{ self.style }} sm:tabs-sm lg:tabs-md xl:tabs-lg 2xl:tabs-xl"
|
|
4
|
+
>
|
|
5
|
+
{% for item in self.items %}
|
|
6
|
+
<input
|
|
7
|
+
class="tab"
|
|
8
|
+
type="radio"
|
|
9
|
+
name="{{ name }}"
|
|
10
|
+
aria-label="{{ item.title }}"
|
|
11
|
+
{% if forloop.first %}checked{% endif %}
|
|
12
|
+
/>
|
|
13
|
+
<div
|
|
14
|
+
class="tab-content bg-base-100 border-base-300 p-4 {% if self.style != 'lift' %} rounded-field {% endif %}"
|
|
15
|
+
>
|
|
16
|
+
<div>{{ item.content }}</div>
|
|
17
|
+
</div>
|
|
18
|
+
{% endfor %}
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{% load wagtailcore_tags %}
|
|
2
|
+
|
|
3
|
+
<nav class="breadcrumbs text-xs lg:text-sm">
|
|
4
|
+
<ol>
|
|
5
|
+
{% for page in page.get_ancestors %}{% if not page.is_root %}
|
|
6
|
+
<li>
|
|
7
|
+
<a href="{% pageurl page %}">{{ page }}</a>
|
|
8
|
+
</li>
|
|
9
|
+
{% endif %}{% endfor %}
|
|
10
|
+
<li>{{ page }}</li>
|
|
11
|
+
</ol>
|
|
12
|
+
</nav>
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
{% load i18n %}
|
|
2
|
+
|
|
3
|
+
<section class="grid gap-8">
|
|
4
|
+
{% if form.errors %}
|
|
5
|
+
<div class="toast z-10">
|
|
6
|
+
<ol class="grid gap-4 max-w-2xl mx-auto">
|
|
7
|
+
{% for field, errors in form.errors.items %}
|
|
8
|
+
<li class="alert alert-soft alert-horizontal alert-error">
|
|
9
|
+
<div class="tooltip tooltip-error" data-tip="{% trans 'Field' %}">
|
|
10
|
+
<span class="badge badge-sm badge-error lg:badge-md">
|
|
11
|
+
<i data-lucide="x-circle" class="size-4 lg:size-6"></i>
|
|
12
|
+
<span>{{ field }}</span>
|
|
13
|
+
</span>
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<div>{{ errors }}</div>
|
|
17
|
+
</li>
|
|
18
|
+
{% endfor %}
|
|
19
|
+
</ol>
|
|
20
|
+
</div>
|
|
21
|
+
{% endif %}
|
|
22
|
+
|
|
23
|
+
<form
|
|
24
|
+
class="grid gap-4"
|
|
25
|
+
enctype="multipart/form-data"
|
|
26
|
+
method="{{ method|default:'post' }}"
|
|
27
|
+
>
|
|
28
|
+
{% if csrf|default_if_none:True %}{% csrf_token %}{% endif %}
|
|
29
|
+
|
|
30
|
+
<!---->
|
|
31
|
+
{{ form }}
|
|
32
|
+
|
|
33
|
+
<button
|
|
34
|
+
type="submit"
|
|
35
|
+
class="btn btn-sm btn-primary lg:btn-md xl:btn-lg 2xl:btn-xl"
|
|
36
|
+
>
|
|
37
|
+
<i data-lucide="send" class="size-4 lg:size-6"></i>
|
|
38
|
+
{% trans 'Submit' %}
|
|
39
|
+
</button>
|
|
40
|
+
</form>
|
|
41
|
+
</section>
|
|
42
|
+
|
|
43
|
+
<script>
|
|
44
|
+
// Style containers and labels
|
|
45
|
+
document
|
|
46
|
+
.querySelectorAll("form > div")
|
|
47
|
+
.forEach((e) => e.classList.add("fieldset"));
|
|
48
|
+
document
|
|
49
|
+
.querySelectorAll("form > div > label")
|
|
50
|
+
.forEach((e) => e.classList.add("fieldset-legend"));
|
|
51
|
+
document
|
|
52
|
+
.querySelectorAll("form > div > .helptext")
|
|
53
|
+
.forEach((e) => e.classList.add("fieldset-label"));
|
|
54
|
+
|
|
55
|
+
// Style inputs
|
|
56
|
+
document
|
|
57
|
+
.querySelectorAll("form > div > input")
|
|
58
|
+
.forEach((e) =>
|
|
59
|
+
e.classList.add(
|
|
60
|
+
"input",
|
|
61
|
+
"w-full",
|
|
62
|
+
"validator",
|
|
63
|
+
"focus:input-primary",
|
|
64
|
+
"active:input-primary",
|
|
65
|
+
),
|
|
66
|
+
);
|
|
67
|
+
document
|
|
68
|
+
.querySelectorAll("form > div > input[type=checkbox]")
|
|
69
|
+
.forEach((e) => {
|
|
70
|
+
e.classList.remove("input", "w-full");
|
|
71
|
+
e.classList.add(
|
|
72
|
+
"checkbox",
|
|
73
|
+
"focus:checkbox-primary",
|
|
74
|
+
"active:checkbox-primary",
|
|
75
|
+
);
|
|
76
|
+
});
|
|
77
|
+
document.querySelectorAll("form > div > input[type=radio]").forEach((e) => {
|
|
78
|
+
e.classList.remove("input", "w-full");
|
|
79
|
+
e.classList.add("radio", "focus:radio-primary", "active:radio-primary");
|
|
80
|
+
});
|
|
81
|
+
document.querySelectorAll("form > div > input[type=file]").forEach((e) => {
|
|
82
|
+
e.classList.remove("input");
|
|
83
|
+
e.classList.add(
|
|
84
|
+
"file-input",
|
|
85
|
+
"focus:file-input-primary",
|
|
86
|
+
"active:file-input-primary",
|
|
87
|
+
);
|
|
88
|
+
});
|
|
89
|
+
document
|
|
90
|
+
.querySelectorAll("form > div > textarea")
|
|
91
|
+
.forEach((e) =>
|
|
92
|
+
e.classList.add(
|
|
93
|
+
"textarea",
|
|
94
|
+
"w-full",
|
|
95
|
+
"validator",
|
|
96
|
+
"focus:textarea-primary",
|
|
97
|
+
"active:textarea-primary",
|
|
98
|
+
),
|
|
99
|
+
);
|
|
100
|
+
document
|
|
101
|
+
.querySelectorAll("form > div > select")
|
|
102
|
+
.forEach((e) =>
|
|
103
|
+
e.classList.add(
|
|
104
|
+
"select",
|
|
105
|
+
"w-full",
|
|
106
|
+
"validator",
|
|
107
|
+
"focus:select-primary",
|
|
108
|
+
"active:select-primary",
|
|
109
|
+
),
|
|
110
|
+
);
|
|
111
|
+
|
|
112
|
+
// Style error lists
|
|
113
|
+
document
|
|
114
|
+
.querySelectorAll("form > div > .errorlist")
|
|
115
|
+
.forEach((e) => e.classList.add("validator-hint", "text-error", "visible"));
|
|
116
|
+
</script>
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{% load i18n wagtailcore_tags %}
|
|
2
|
+
|
|
3
|
+
<!---->
|
|
4
|
+
{% if LANGUAGES %}
|
|
5
|
+
<li
|
|
6
|
+
class="tooltip tooltip-left rtl:tooltip-right"
|
|
7
|
+
data-tip="{% trans 'Language' %}"
|
|
8
|
+
>
|
|
9
|
+
{% url 'set_language' as action %}
|
|
10
|
+
<form id="lang-form" method="post" class="hidden" action="{{ action }}">
|
|
11
|
+
{% csrf_token %}
|
|
12
|
+
<input name="next" type="hidden" value="{{ redirect_to }}" />
|
|
13
|
+
</form>
|
|
14
|
+
<button
|
|
15
|
+
popovertarget="language"
|
|
16
|
+
style="anchor-name: --language"
|
|
17
|
+
class="btn btn-sm btn-square btn-ghost lg:btn-md 2xl:btn-lg"
|
|
18
|
+
>
|
|
19
|
+
<i data-lucide="earth" class="size-4 lg:size-6"></i>
|
|
20
|
+
<span class="sr-only">{% trans 'Language' %}</span>
|
|
21
|
+
</button>
|
|
22
|
+
|
|
23
|
+
<ul
|
|
24
|
+
popover
|
|
25
|
+
id="language"
|
|
26
|
+
style="position-anchor: --language; max-height: 20rem"
|
|
27
|
+
class="menu menu-sm dropdown dropdown-left bg-base-100/50 rounded-box shadow-lg backdrop-blur-3xl rtl:dropdown-right lg:menu-md 2xl:menu-lg"
|
|
28
|
+
>
|
|
29
|
+
<li class="menu-title">{% trans 'Select a language' %}</li>
|
|
30
|
+
{% if page %}
|
|
31
|
+
<!---->
|
|
32
|
+
{% for translation in page.get_translations.live %}
|
|
33
|
+
<!---->
|
|
34
|
+
{% get_language_info for translation.locale.language_code as l %}
|
|
35
|
+
<li class="tooltip" data-tip="{{ l.name_translated }}">
|
|
36
|
+
<a
|
|
37
|
+
rel="alternate"
|
|
38
|
+
href="{% pageurl translation %}"
|
|
39
|
+
hreflang="{{ translation.locale.language_code }}"
|
|
40
|
+
class="{% if translation.locale.language_code == LANGUAGE_CODE %}menu-active{% endif %}"
|
|
41
|
+
>
|
|
42
|
+
{{ l.name_translated }} - ({{ l.name_local }})
|
|
43
|
+
</a>
|
|
44
|
+
</li>
|
|
45
|
+
{% empty %}
|
|
46
|
+
<li>
|
|
47
|
+
<a href="#" class="menu-active">{{ page.locale }}</a>
|
|
48
|
+
</li>
|
|
49
|
+
{% endfor %}
|
|
50
|
+
<!---->
|
|
51
|
+
{% else %}
|
|
52
|
+
<!---->
|
|
53
|
+
{% for language_code, language_name in LANGUAGES %}
|
|
54
|
+
<!---->
|
|
55
|
+
{% get_language_info for language_code as lang %}
|
|
56
|
+
<li class="tooltip" data-tip="{{ lang.name_translated }}">
|
|
57
|
+
<label
|
|
58
|
+
class="{% if language_code == LANGUAGE_CODE %}menu-active{% endif %}"
|
|
59
|
+
>
|
|
60
|
+
<input
|
|
61
|
+
type="submit"
|
|
62
|
+
class="hidden"
|
|
63
|
+
name="language"
|
|
64
|
+
form="lang-form"
|
|
65
|
+
value="{{ language_code }}"
|
|
66
|
+
aria-label="{{ lang.name_local }} ({{ lang.code }})"
|
|
67
|
+
/>
|
|
68
|
+
|
|
69
|
+
{{ language_name }} - ({{ lang.name_local }})
|
|
70
|
+
</label>
|
|
71
|
+
</li>
|
|
72
|
+
{% endfor %}
|
|
73
|
+
<!---->
|
|
74
|
+
{% endif %}
|
|
75
|
+
</ul>
|
|
76
|
+
</li>
|
|
77
|
+
{% endif %}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{% if messages %}
|
|
2
|
+
<div class="toast toast-top toast-end top-24 z-50">
|
|
3
|
+
<ol class="grid gap-4 max-w-xl">
|
|
4
|
+
{% for message in messages %}
|
|
5
|
+
<!---->
|
|
6
|
+
{% if 'error' in message.tags %}
|
|
7
|
+
<li class="alert alert-soft alert-error">
|
|
8
|
+
<div class="tooltip tooltip-error" data-tip="{{ message.tags|title }}">
|
|
9
|
+
<i data-lucide="circle-x" class="size-4 lg:size-6"></i>
|
|
10
|
+
<span class="sr-only">{{ message.tags|title }}</span>
|
|
11
|
+
</div>
|
|
12
|
+
|
|
13
|
+
<p>{{ message }}</p>
|
|
14
|
+
</li>
|
|
15
|
+
{% elif 'warning' in message.tags %}
|
|
16
|
+
<li class="alert alert-soft alert-warning">
|
|
17
|
+
<div class="tooltip tooltip-warning" data-tip="{{ message.tags|title }}">
|
|
18
|
+
<i data-lucide="triangle-alert" class="size-4 lg:size-6"></i>
|
|
19
|
+
<span class="sr-only">{{ message.tags|title }}</span>
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
<p>{{ message }}</p>
|
|
23
|
+
</li>
|
|
24
|
+
{% elif 'success' in message.tags %}
|
|
25
|
+
<li class="alert alert-soft alert-success">
|
|
26
|
+
<div class="tooltip tooltip-success" data-tip="{{ message.tags|title }}">
|
|
27
|
+
<i data-lucide="circle-check" class="size-4 lg:size-6"></i>
|
|
28
|
+
<span class="sr-only">{{ message.tags|title }}</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
<p>{{ message }}</p>
|
|
32
|
+
</li>
|
|
33
|
+
{% elif 'info' in message.tags %}
|
|
34
|
+
<li class="alert alert-soft alert-horizontal alert-info">
|
|
35
|
+
<div class="tooltip tooltip-info" data-tip="{{ message.tags|title }}">
|
|
36
|
+
<i data-lucide="info" class="size-4 lg:size-6"></i>
|
|
37
|
+
<span class="sr-only">{{ message.tags|title }}</span>
|
|
38
|
+
</div>
|
|
39
|
+
|
|
40
|
+
<p>{{ message }}</p>
|
|
41
|
+
</li>
|
|
42
|
+
{% else %}
|
|
43
|
+
<li class="alert alert-soft alert-horizontal">
|
|
44
|
+
<div class="tooltip tooltip-accent" data-tip="{{ message.tags|title }}">
|
|
45
|
+
<i data-lucide="bug" class="size-4 lg:size-6"></i>
|
|
46
|
+
<span class="sr-only">{{ message.tags|title }}</span>
|
|
47
|
+
</div>
|
|
48
|
+
|
|
49
|
+
<p>{{ message }}</p>
|
|
50
|
+
</li>
|
|
51
|
+
{% endif %}
|
|
52
|
+
<!---->
|
|
53
|
+
{% endfor %}
|
|
54
|
+
</ol>
|
|
55
|
+
</div>
|
|
56
|
+
{% endif %}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{% load i18n wagtailcore_tags %}
|
|
2
|
+
|
|
3
|
+
<!---->
|
|
4
|
+
{% if not page.is_root %}
|
|
5
|
+
<!---->
|
|
6
|
+
{% if page.get_next_sibling %}
|
|
7
|
+
<div class="tooltip ml-auto rtl:ml-0 rtl:mr-auto" data-tip="{% trans 'Next' %}">
|
|
8
|
+
<a
|
|
9
|
+
href="{% pageurl page.get_next_sibling %}"
|
|
10
|
+
class="btn btn-sm btn-ghost lg:btn-md xl:btn-lg"
|
|
11
|
+
>
|
|
12
|
+
{{ page.get_next_sibling }}
|
|
13
|
+
<i data-lucide="chevron-right" class="size-4 lg:size-6 rtl:rotate-180"></i>
|
|
14
|
+
</a>
|
|
15
|
+
</div>
|
|
16
|
+
{% else %}
|
|
17
|
+
<!---->
|
|
18
|
+
{% include 'wagtail/components/next.html' with page=page.get_parent %}
|
|
19
|
+
<!---->
|
|
20
|
+
{% endif %}
|
|
21
|
+
<!---->
|
|
22
|
+
{% endif %}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{% load i18n %}
|
|
2
|
+
|
|
3
|
+
<!---->
|
|
4
|
+
{% if is_paginated %}
|
|
5
|
+
<ol class="flex items-center justify-center gap-2 flex-wrap lg:gap-4">
|
|
6
|
+
{% if page_obj.has_previous %}
|
|
7
|
+
<li class="tooltip" data-tip="{% translate 'Previous' %}">
|
|
8
|
+
<a
|
|
9
|
+
href="?page={{ page_obj.previous_page_number }}"
|
|
10
|
+
class="btn btn-sm btn-ghost lg:btn-md"
|
|
11
|
+
>
|
|
12
|
+
<i data-lucide="chevron-left" class="size-4 lg:size-6 rtl:rotate-180"></i>
|
|
13
|
+
<span class="sr-only">{% translate 'Previous' %}</span>
|
|
14
|
+
</a>
|
|
15
|
+
</li>
|
|
16
|
+
|
|
17
|
+
<li class="tooltip" data-tip="{% translate 'First' %}">
|
|
18
|
+
<a href="?page=1" class="btn btn-sm btn-ghost lg:btn-md">
|
|
19
|
+
<i
|
|
20
|
+
data-lucide="chevron-first"
|
|
21
|
+
class="size-4 lg:size-6 rtl:rotate-180"
|
|
22
|
+
></i>
|
|
23
|
+
{% translate 'First' %}
|
|
24
|
+
</a>
|
|
25
|
+
</li>
|
|
26
|
+
{% endif %}
|
|
27
|
+
|
|
28
|
+
<li class="tooltip" data-tip="{% translate 'Current' %}">
|
|
29
|
+
<button class="btn btn-sm btn-ghost lg:btn-md">
|
|
30
|
+
{{ page_obj.number }} of {{ page_obj.paginator.num_pages }}
|
|
31
|
+
</button>
|
|
32
|
+
</li>
|
|
33
|
+
|
|
34
|
+
{% if page_obj.has_next %}
|
|
35
|
+
<li class="tooltip" data-tip="{% translate 'Last' %}">
|
|
36
|
+
<a
|
|
37
|
+
href="?page={{ page_obj.paginator.num_pages }}"
|
|
38
|
+
class="btn btn-sm btn-ghost lg:btn-md"
|
|
39
|
+
>
|
|
40
|
+
{% translate 'Last' %}
|
|
41
|
+
<i data-lucide="chevron-last" class="size-4 lg:size-6 rtl:rotate-180"></i>
|
|
42
|
+
</a>
|
|
43
|
+
</li>
|
|
44
|
+
|
|
45
|
+
<li class="tooltip" data-tip="{% translate 'Next' %}">
|
|
46
|
+
<a
|
|
47
|
+
href="?page={{ page_obj.next_page_number }}"
|
|
48
|
+
class="btn btn-sm btn-ghost lg:btn-md"
|
|
49
|
+
>
|
|
50
|
+
<i
|
|
51
|
+
data-lucide="chevron-right"
|
|
52
|
+
class="size-4 lg:size-6 rtl:rotate-180"
|
|
53
|
+
></i>
|
|
54
|
+
<span class="sr-only">{% translate 'Next' %}</span>
|
|
55
|
+
</a>
|
|
56
|
+
</li>
|
|
57
|
+
{% endif %}
|
|
58
|
+
</ol>
|
|
59
|
+
{% endif %}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{% load i18n wagtailcore_tags %}
|
|
2
|
+
|
|
3
|
+
<!---->
|
|
4
|
+
{% if not page.is_root %}
|
|
5
|
+
<!---->
|
|
6
|
+
{% if page.get_prev_sibling %}
|
|
7
|
+
<div
|
|
8
|
+
class="tooltip mr-auto rtl:mr-0 rtl:ml-auto"
|
|
9
|
+
data-tip="{% trans 'Previous' %}"
|
|
10
|
+
>
|
|
11
|
+
<a
|
|
12
|
+
href="{% pageurl page.get_prev_sibling %}"
|
|
13
|
+
class="btn btn-sm btn-ghost lg:btn-md xl:btn-lg"
|
|
14
|
+
>
|
|
15
|
+
<i data-lucide="chevron-left" class="size-4 lg:size-6 rtl:rotate-180"></i>
|
|
16
|
+
{{ page.get_prev_sibling }}
|
|
17
|
+
</a>
|
|
18
|
+
</div>
|
|
19
|
+
{% else %}
|
|
20
|
+
<!---->
|
|
21
|
+
{% include 'wagtail/components/prev.html' with page=page.get_parent %}
|
|
22
|
+
<!---->
|
|
23
|
+
{% endif %}
|
|
24
|
+
<!---->
|
|
25
|
+
{% endif %}
|