domma-cms 1.8.44 → 1.8.46
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/CHANGELOG.md +8 -0
- package/admin/js/lib/code-format.js +50 -40
- package/admin/js/templates/docs/usage-blocks.html +29 -0
- package/admin/js/views/page-editor.js +10 -8
- package/docs/configuration.md +19 -7
- package/docs/starter-blocks.md +203 -0
- package/package.json +1 -1
- package/server/blocks/catalog.json +98 -0
- package/server/blocks/domma-block-banner.css +65 -0
- package/server/blocks/domma-block-banner.html +22 -0
- package/server/blocks/domma-block-banner.meta.json +7 -0
- package/server/blocks/domma-block-contact.css +18 -0
- package/server/blocks/domma-block-contact.html +15 -0
- package/server/blocks/domma-block-contact.meta.json +7 -0
- package/server/blocks/domma-block-cta.css +8 -0
- package/server/blocks/domma-block-cta.html +17 -0
- package/server/blocks/domma-block-cta.meta.json +7 -0
- package/server/blocks/domma-block-faq.css +13 -0
- package/server/blocks/domma-block-faq.html +17 -0
- package/server/blocks/domma-block-faq.meta.json +7 -0
- package/server/blocks/domma-block-features.css +18 -0
- package/server/blocks/domma-block-features.html +19 -0
- package/server/blocks/domma-block-features.meta.json +7 -0
- package/server/blocks/domma-block-hero.css +15 -0
- package/server/blocks/domma-block-hero.html +13 -0
- package/server/blocks/domma-block-hero.meta.json +7 -0
- package/server/blocks/domma-block-image.css +8 -0
- package/server/blocks/domma-block-image.html +12 -0
- package/server/blocks/domma-block-image.meta.json +7 -0
- package/server/blocks/domma-block-logos.css +13 -0
- package/server/blocks/domma-block-logos.html +18 -0
- package/server/blocks/domma-block-logos.meta.json +7 -0
- package/server/blocks/domma-block-pricing-card.css +20 -0
- package/server/blocks/domma-block-pricing-card.html +15 -0
- package/server/blocks/domma-block-pricing-card.meta.json +7 -0
- package/server/blocks/domma-block-service-card.css +17 -0
- package/server/blocks/domma-block-service-card.html +15 -0
- package/server/blocks/domma-block-service-card.meta.json +7 -0
- package/server/blocks/domma-block-split.css +26 -0
- package/server/blocks/domma-block-split.html +22 -0
- package/server/blocks/domma-block-split.meta.json +7 -0
- package/server/blocks/domma-block-stats.css +20 -0
- package/server/blocks/domma-block-stats.html +16 -0
- package/server/blocks/domma-block-stats.meta.json +7 -0
- package/server/blocks/domma-block-steps.css +19 -0
- package/server/blocks/domma-block-steps.html +17 -0
- package/server/blocks/domma-block-steps.meta.json +7 -0
- package/server/blocks/domma-block-team-card.css +13 -0
- package/server/blocks/domma-block-team-card.html +14 -0
- package/server/blocks/domma-block-team-card.meta.json +7 -0
- package/server/blocks/domma-block-testimonial.css +13 -0
- package/server/blocks/domma-block-testimonial.html +12 -0
- package/server/blocks/domma-block-testimonial.meta.json +7 -0
- package/server/blocks/domma-block-text.css +9 -0
- package/server/blocks/domma-block-text.html +11 -0
- package/server/blocks/domma-block-text.meta.json +7 -0
- package/server/services/blocks.js +2 -0
- package/server/services/starter-blocks.js +18 -0
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# Domma block library
|
|
2
|
+
|
|
3
|
+
Sixteen free, editable Custom Blocks come with every Domma CMS site. There is
|
|
4
|
+
no extra licence or plugin to install. Search for `domma-block-` in **Blocks**
|
|
5
|
+
or in the editor's **Add block** menu. Each block includes its own scoped CSS,
|
|
6
|
+
a copyable example and documented parameters.
|
|
7
|
+
|
|
8
|
+
## Choose a block
|
|
9
|
+
|
|
10
|
+
| Block | Use it for |
|
|
11
|
+
| --- | --- |
|
|
12
|
+
| `domma-block-banner` | A photo banner with a readable overlay across its left half. |
|
|
13
|
+
| `domma-block-split` | An image beside a section heading and introduction. |
|
|
14
|
+
| `domma-block-cta` | A welcoming call to action using your site theme. |
|
|
15
|
+
| `domma-block-hero` | A centred page introduction with an optional button. |
|
|
16
|
+
| `domma-block-text` | A readable text section for your story or an introduction. |
|
|
17
|
+
| `domma-block-features` | An introduction and up to three feature cards. |
|
|
18
|
+
| `domma-block-service-card` | A reusable service card with an optional photo and button. |
|
|
19
|
+
| `domma-block-testimonial` | A customer quotation with an optional attribution. |
|
|
20
|
+
| `domma-block-stats` | Up to three useful figures with clear labels. |
|
|
21
|
+
| `domma-block-steps` | A clear, numbered process with up to three steps. |
|
|
22
|
+
| `domma-block-faq` | Up to three questions and answers, readable without JavaScript. |
|
|
23
|
+
| `domma-block-contact` | Contact details, an address and opening hours. |
|
|
24
|
+
| `domma-block-pricing-card` | A clear price or package card with an optional enquiry button. |
|
|
25
|
+
| `domma-block-team-card` | A team member photo, role and short introduction. |
|
|
26
|
+
| `domma-block-image` | An uncropped image with an optional caption. |
|
|
27
|
+
| `domma-block-logos` | A responsive row of up to four organisation logos. |
|
|
28
|
+
|
|
29
|
+
## Make it yours
|
|
30
|
+
|
|
31
|
+
Replace example picture addresses with images from your Media library. Headings,
|
|
32
|
+
introductions and other text parameters accept plain text. Use `alt` to describe
|
|
33
|
+
an image, or leave it empty when the image is decorative. Add both `link` and
|
|
34
|
+
`label` for a button; omit them to hide it. Unused feature, step, FAQ, figure and
|
|
35
|
+
logo slots are hidden automatically.
|
|
36
|
+
|
|
37
|
+
The banner and hero use an `h1` main heading. Choose one for each page; the other
|
|
38
|
+
sections use `h2` headings, and individual service, team and price cards use
|
|
39
|
+
`h3`. Place cards below a section heading. Image and card blocks can also go
|
|
40
|
+
inside your usual grid or column shortcodes.
|
|
41
|
+
|
|
42
|
+
All blocks adapt to smaller screens, use your site's theme where appropriate,
|
|
43
|
+
and work without the Domma marketing stylesheet. FAQ questions and answers stay
|
|
44
|
+
readable without JavaScript. Contact email and phone links
|
|
45
|
+
open the visitor's usual apps. Prices are display text, so include your currency,
|
|
46
|
+
billing period and any tax wording explicitly. Use your own real figures,
|
|
47
|
+
approved customer quotes and organisation logos.
|
|
48
|
+
|
|
49
|
+
Edit or duplicate a block to change its design. The CMS adds missing library
|
|
50
|
+
files on startup and preserves existing HTML, CSS and metadata files. Existing
|
|
51
|
+
sites receive new blocks when they upgrade to a CMS version that includes them.
|
|
52
|
+
|
|
53
|
+
## Copy an example
|
|
54
|
+
|
|
55
|
+
### domma-block-banner
|
|
56
|
+
|
|
57
|
+
A photo banner with a readable overlay across its left half.
|
|
58
|
+
|
|
59
|
+
```text
|
|
60
|
+
[domma-block-banner header="A little guidance, or a helping hand." blurb="Find an answer, learn something new or get in touch." image="/media/banner.jpg" alt="People working together at a laptop" link="/contact" label="Get in touch" /]
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### domma-block-split
|
|
64
|
+
|
|
65
|
+
An image beside a section heading and introduction.
|
|
66
|
+
|
|
67
|
+
```text
|
|
68
|
+
[domma-block-split header="Made for your business" blurb="Tell visitors how you can help." image="/media/about.jpg" alt="Our workspace" link="/about" label="Meet us" /]
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### domma-block-cta
|
|
72
|
+
|
|
73
|
+
A welcoming call to action using your site theme.
|
|
74
|
+
|
|
75
|
+
```text
|
|
76
|
+
[domma-block-cta header="Have something in mind?" blurb="Tell us a little about your plans." link="/contact" label="Let us help" /]
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### domma-block-hero
|
|
80
|
+
|
|
81
|
+
A centred page introduction with an optional button.
|
|
82
|
+
|
|
83
|
+
```text
|
|
84
|
+
[domma-block-hero header="Welcome to your next chapter" blurb="Say what you do and who you help." link="/contact" label="Let us help" /]
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### domma-block-text
|
|
88
|
+
|
|
89
|
+
A readable text section for your story or an introduction.
|
|
90
|
+
|
|
91
|
+
```text
|
|
92
|
+
[domma-block-text header="Our story" blurb="Share a little about your business and the people behind it." /]
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### domma-block-features
|
|
96
|
+
|
|
97
|
+
An introduction and up to three feature cards.
|
|
98
|
+
|
|
99
|
+
```text
|
|
100
|
+
[domma-block-features header="How we help" blurb="Practical support for your business." title1="Plan" text1="Find the right direction." title2="Build" text2="Bring your ideas to life." title3="Grow" text3="Keep moving forward." /]
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### domma-block-service-card
|
|
104
|
+
|
|
105
|
+
A reusable service card with an optional photo and button.
|
|
106
|
+
|
|
107
|
+
```text
|
|
108
|
+
[domma-block-service-card header="Your service" blurb="Explain the benefit in a sentence or two." link="/services" label="Find out more" /]
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### domma-block-testimonial
|
|
112
|
+
|
|
113
|
+
A customer quotation with an optional attribution.
|
|
114
|
+
|
|
115
|
+
```text
|
|
116
|
+
[domma-block-testimonial quote="Replace this with a customer quotation you have permission to share." name="Customer name" detail="Business or role" /]
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### domma-block-stats
|
|
120
|
+
|
|
121
|
+
Up to three useful figures with clear labels.
|
|
122
|
+
|
|
123
|
+
```text
|
|
124
|
+
[domma-block-stats header="A few useful facts" value1="Your figure" label1="Explain what it represents" /]
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### domma-block-steps
|
|
128
|
+
|
|
129
|
+
A clear, numbered process with up to three steps.
|
|
130
|
+
|
|
131
|
+
```text
|
|
132
|
+
[domma-block-steps header="Getting started" blurb="A simple way forward." title1="Say hello" text1="Tell us what you need." title2="Make a plan" text2="Agree the details together." title3="Get going" text3="Put your plan into action." /]
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### domma-block-faq
|
|
136
|
+
|
|
137
|
+
Up to three questions and answers, readable without JavaScript.
|
|
138
|
+
|
|
139
|
+
```text
|
|
140
|
+
[domma-block-faq header="A few common questions" question1="How do we get started?" answer1="Get in touch and tell us what you have in mind." question2="Can I ask a question first?" answer2="Of course. We are happy to help." /]
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### domma-block-contact
|
|
144
|
+
|
|
145
|
+
Contact details, an address and opening hours.
|
|
146
|
+
|
|
147
|
+
```text
|
|
148
|
+
[domma-block-contact header="Get in touch" blurb="Tell us how we can help." email="hello@example.com" phone="+44 1234 567890" address="Your business address" hours="Your opening hours" /]
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### domma-block-pricing-card
|
|
152
|
+
|
|
153
|
+
A clear price or package card with an optional enquiry button.
|
|
154
|
+
|
|
155
|
+
```text
|
|
156
|
+
[domma-block-pricing-card header="Your package" price="Ask for a quote" blurb="Describe exactly what is included." link="/contact" label="Talk it through" /]
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### domma-block-team-card
|
|
160
|
+
|
|
161
|
+
A team member photo, role and short introduction.
|
|
162
|
+
|
|
163
|
+
```text
|
|
164
|
+
[domma-block-team-card name="Team member" role="Role or specialism" blurb="A short, friendly introduction." image="/media/team-member.jpg" alt="Portrait of your team member" /]
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### domma-block-image
|
|
168
|
+
|
|
169
|
+
An uncropped image with an optional caption.
|
|
170
|
+
|
|
171
|
+
```text
|
|
172
|
+
[domma-block-image image="/media/your-work.jpg" alt="Describe what visitors can see" caption="Add a little context to the image." /]
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### domma-block-logos
|
|
176
|
+
|
|
177
|
+
A responsive row of up to four organisation logos.
|
|
178
|
+
|
|
179
|
+
```text
|
|
180
|
+
[domma-block-logos header="Who we work with" image1="/media/partner-logo.svg" alt1="Partner name" /]
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Blocks in headers, footers and menus
|
|
184
|
+
|
|
185
|
+
The running CMS already supports custom blocks in **Site Settings > Footer**.
|
|
186
|
+
The selected blocks appear above the standard footer menus. Each footer entry
|
|
187
|
+
is a block name, without per-placement parameters, so duplicate a starter block
|
|
188
|
+
and replace its placeholders with your site's details before selecting it there.
|
|
189
|
+
|
|
190
|
+
A custom block can also contain a menu shortcode, for example:
|
|
191
|
+
|
|
192
|
+
```text
|
|
193
|
+
[menu location="footer-primary" /]
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Keep navigation links in Menus so visibility, nesting and current-page behaviour
|
|
197
|
+
continue to come from the menu system. A block can supply the surrounding layout.
|
|
198
|
+
|
|
199
|
+
Header block slots would be a useful next step: a shared announcement bar,
|
|
200
|
+
contact strip or branded header around the existing navigation. They are a
|
|
201
|
+
proposed extension, not part of this library change. Replacing the full navigation
|
|
202
|
+
would also need to retain mobile controls, keyboard access and the visitor's
|
|
203
|
+
current-page indication.
|
package/package.json
CHANGED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"name": "domma-block-banner",
|
|
4
|
+
"category": "introductions",
|
|
5
|
+
"description": "A photo banner with a readable overlay across its left half.",
|
|
6
|
+
"example": "[domma-block-banner header=\"A little guidance, or a helping hand.\" blurb=\"Find an answer, learn something new or get in touch.\" image=\"/media/banner.jpg\" alt=\"People working together at a laptop\" link=\"/contact\" label=\"Get in touch\" /]"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"name": "domma-block-split",
|
|
10
|
+
"category": "content",
|
|
11
|
+
"description": "An image beside a section heading and introduction.",
|
|
12
|
+
"example": "[domma-block-split header=\"Made for your business\" blurb=\"Tell visitors how you can help.\" image=\"/media/about.jpg\" alt=\"Our workspace\" link=\"/about\" label=\"Meet us\" /]"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"name": "domma-block-cta",
|
|
16
|
+
"category": "conversion",
|
|
17
|
+
"description": "A welcoming call to action using your site theme.",
|
|
18
|
+
"example": "[domma-block-cta header=\"Have something in mind?\" blurb=\"Tell us a little about your plans.\" link=\"/contact\" label=\"Let us help\" /]"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"name": "domma-block-hero",
|
|
22
|
+
"category": "introductions",
|
|
23
|
+
"description": "A centred page introduction with an optional button.",
|
|
24
|
+
"example": "[domma-block-hero header=\"Welcome to your next chapter\" blurb=\"Say what you do and who you help.\" link=\"/contact\" label=\"Let us help\" /]"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "domma-block-text",
|
|
28
|
+
"category": "content",
|
|
29
|
+
"description": "A readable text section for your story or an introduction.",
|
|
30
|
+
"example": "[domma-block-text header=\"Our story\" blurb=\"Share a little about your business and the people behind it.\" /]"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"name": "domma-block-features",
|
|
34
|
+
"category": "services",
|
|
35
|
+
"description": "An introduction and up to three feature cards.",
|
|
36
|
+
"example": "[domma-block-features header=\"How we help\" blurb=\"Practical support for your business.\" title1=\"Plan\" text1=\"Find the right direction.\" title2=\"Build\" text2=\"Bring your ideas to life.\" title3=\"Grow\" text3=\"Keep moving forward.\" /]"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "domma-block-service-card",
|
|
40
|
+
"category": "services",
|
|
41
|
+
"description": "A reusable service card with an optional photo and button.",
|
|
42
|
+
"example": "[domma-block-service-card header=\"Your service\" blurb=\"Explain the benefit in a sentence or two.\" link=\"/services\" label=\"Find out more\" /]"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"name": "domma-block-testimonial",
|
|
46
|
+
"category": "trust",
|
|
47
|
+
"description": "A customer quotation with an optional attribution.",
|
|
48
|
+
"example": "[domma-block-testimonial quote=\"Replace this with a customer quotation you have permission to share.\" name=\"Customer name\" detail=\"Business or role\" /]"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"name": "domma-block-stats",
|
|
52
|
+
"category": "trust",
|
|
53
|
+
"description": "Up to three useful figures with clear labels.",
|
|
54
|
+
"example": "[domma-block-stats header=\"A few useful facts\" value1=\"Your figure\" label1=\"Explain what it represents\" /]"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"name": "domma-block-steps",
|
|
58
|
+
"category": "services",
|
|
59
|
+
"description": "A clear, numbered process with up to three steps.",
|
|
60
|
+
"example": "[domma-block-steps header=\"Getting started\" blurb=\"A simple way forward.\" title1=\"Say hello\" text1=\"Tell us what you need.\" title2=\"Make a plan\" text2=\"Agree the details together.\" title3=\"Get going\" text3=\"Put your plan into action.\" /]"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"name": "domma-block-faq",
|
|
64
|
+
"category": "support",
|
|
65
|
+
"description": "Up to three questions and answers, readable without JavaScript.",
|
|
66
|
+
"example": "[domma-block-faq header=\"A few common questions\" question1=\"How do we get started?\" answer1=\"Get in touch and tell us what you have in mind.\" question2=\"Can I ask a question first?\" answer2=\"Of course. We are happy to help.\" /]"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"name": "domma-block-contact",
|
|
70
|
+
"category": "support",
|
|
71
|
+
"description": "Contact details, an address and opening hours.",
|
|
72
|
+
"example": "[domma-block-contact header=\"Get in touch\" blurb=\"Tell us how we can help.\" email=\"hello@example.com\" phone=\"+44 1234 567890\" address=\"Your business address\" hours=\"Your opening hours\" /]"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"name": "domma-block-pricing-card",
|
|
76
|
+
"category": "services",
|
|
77
|
+
"description": "A clear price or package card with an optional enquiry button.",
|
|
78
|
+
"example": "[domma-block-pricing-card header=\"Your package\" price=\"Ask for a quote\" blurb=\"Describe exactly what is included.\" link=\"/contact\" label=\"Talk it through\" /]"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"name": "domma-block-team-card",
|
|
82
|
+
"category": "trust",
|
|
83
|
+
"description": "A team member photo, role and short introduction.",
|
|
84
|
+
"example": "[domma-block-team-card name=\"Team member\" role=\"Role or specialism\" blurb=\"A short, friendly introduction.\" image=\"/media/team-member.jpg\" alt=\"Portrait of your team member\" /]"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"name": "domma-block-image",
|
|
88
|
+
"category": "content",
|
|
89
|
+
"description": "An uncropped image with an optional caption.",
|
|
90
|
+
"example": "[domma-block-image image=\"/media/your-work.jpg\" alt=\"Describe what visitors can see\" caption=\"Add a little context to the image.\" /]"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"name": "domma-block-logos",
|
|
94
|
+
"category": "trust",
|
|
95
|
+
"description": "A responsive row of up to four organisation logos.",
|
|
96
|
+
"example": "[domma-block-logos header=\"Who we work with\" image1=\"/media/partner-logo.svg\" alt1=\"Partner name\" /]"
|
|
97
|
+
}
|
|
98
|
+
]
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
.db-banner {
|
|
2
|
+
margin-block: 1.5rem;
|
|
3
|
+
position: relative;
|
|
4
|
+
isolation: isolate;
|
|
5
|
+
overflow: hidden;
|
|
6
|
+
border-radius: var(--dm-radius-xl, 1rem);
|
|
7
|
+
background: #152832;
|
|
8
|
+
color: #fff;
|
|
9
|
+
}
|
|
10
|
+
.db-banner-image {
|
|
11
|
+
position: absolute;
|
|
12
|
+
inset: 0;
|
|
13
|
+
width: 100%;
|
|
14
|
+
height: 100%;
|
|
15
|
+
object-fit: cover;
|
|
16
|
+
}
|
|
17
|
+
.db-banner-image[src=""], .db-banner-image:not([src]) { display: none; }
|
|
18
|
+
.db-banner-panel {
|
|
19
|
+
position: relative;
|
|
20
|
+
box-sizing: border-box;
|
|
21
|
+
display: flex;
|
|
22
|
+
flex-direction: column;
|
|
23
|
+
justify-content: center;
|
|
24
|
+
align-items: flex-start;
|
|
25
|
+
width: 50%;
|
|
26
|
+
min-height: 30rem;
|
|
27
|
+
padding: clamp(1.5rem, 4vw, 3.5rem);
|
|
28
|
+
background: rgb(13 30 40 / 92%);
|
|
29
|
+
}
|
|
30
|
+
.db-banner-heading {
|
|
31
|
+
margin: 0 0 1.25rem;
|
|
32
|
+
color: #fff;
|
|
33
|
+
font-size: clamp(2rem, 3.5vw, 3.25rem);
|
|
34
|
+
line-height: 1.12;
|
|
35
|
+
letter-spacing: -.02em;
|
|
36
|
+
overflow-wrap: anywhere;
|
|
37
|
+
}
|
|
38
|
+
.db-banner-blurb {
|
|
39
|
+
margin: 0;
|
|
40
|
+
color: #fff;
|
|
41
|
+
font-size: 1.1rem;
|
|
42
|
+
line-height: 1.7;
|
|
43
|
+
overflow-wrap: anywhere;
|
|
44
|
+
white-space: pre-line;
|
|
45
|
+
}
|
|
46
|
+
.db-banner a.db-banner-link {
|
|
47
|
+
display: inline-flex;
|
|
48
|
+
margin-top: 1.75rem;
|
|
49
|
+
padding: .8rem 1.3rem;
|
|
50
|
+
border: 2px solid #fff;
|
|
51
|
+
border-radius: var(--dm-radius, .5rem);
|
|
52
|
+
background: #fff;
|
|
53
|
+
color: #152832;
|
|
54
|
+
font-weight: 600;
|
|
55
|
+
line-height: 1.4;
|
|
56
|
+
text-decoration: none;
|
|
57
|
+
overflow-wrap: anywhere;
|
|
58
|
+
}
|
|
59
|
+
.db-banner a.db-banner-link:hover { background: #e8f1f5; color: #152832; }
|
|
60
|
+
.db-banner a.db-banner-link:focus-visible { outline: 3px solid #fff; outline-offset: 4px; }
|
|
61
|
+
.db-banner a.db-banner-link[href=""], .db-banner a.db-banner-link:not([href]), .db-banner a.db-banner-link:empty { display: none; }
|
|
62
|
+
@media (max-width: 767px) {
|
|
63
|
+
.db-banner-image { position: relative; display: block; height: 15rem; }
|
|
64
|
+
.db-banner-panel { width: 100%; min-height: 0; padding: 1.75rem; }
|
|
65
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
domma-block-banner - A photo banner with a readable overlay across its left half.
|
|
3
|
+
|
|
4
|
+
Parameters:
|
|
5
|
+
header - Main page heading (h1; use once per page)
|
|
6
|
+
blurb - Short introduction, as plain text
|
|
7
|
+
image - Image address from your media library
|
|
8
|
+
alt - Description of the image; leave empty for a decorative photo
|
|
9
|
+
link - Optional button destination
|
|
10
|
+
label - Optional button text
|
|
11
|
+
|
|
12
|
+
Example:
|
|
13
|
+
[domma-block-banner header="A little guidance, or a helping hand." blurb="Find an answer, learn something new or get in touch." image="/media/banner.jpg" alt="People working together at a laptop" link="/contact" label="Get in touch" /]
|
|
14
|
+
-->
|
|
15
|
+
<section class="db-banner">
|
|
16
|
+
<img class="db-banner-image" src="{{image}}" alt="{{alt}}" fetchpriority="high">
|
|
17
|
+
<div class="db-banner-panel">
|
|
18
|
+
<h1 class="db-banner-heading">{{header}}</h1>
|
|
19
|
+
<p class="db-banner-blurb">{{blurb}}</p>
|
|
20
|
+
<a class="db-banner-link db-banner-btn" href="{{link}}">{{label}}</a>
|
|
21
|
+
</div>
|
|
22
|
+
</section>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
.db-contact {
|
|
2
|
+
margin-block: 1.5rem;
|
|
3
|
+
color: var(--dm-text, #152832);
|
|
4
|
+
overflow-wrap: anywhere;
|
|
5
|
+
padding: clamp(1.25rem, 3vw, 2rem);
|
|
6
|
+
border: 1px solid var(--dm-card-border, var(--dm-border, #d5e0e5));
|
|
7
|
+
border-radius: var(--dm-radius-xl, 1rem);
|
|
8
|
+
background: var(--dm-card-bg, var(--dm-surface, #f5f8fa));
|
|
9
|
+
}
|
|
10
|
+
.db-contact-heading { margin: 0 0 1rem; color: inherit; font-size: clamp(1.6rem, 3vw, 2.4rem); line-height: 1.2; }
|
|
11
|
+
.db-contact-blurb { margin: 0; line-height: 1.75; white-space: pre-line; }
|
|
12
|
+
.db-contact-blurb:empty { display: none; }
|
|
13
|
+
.db-contact-details { display: grid; gap: .75rem; margin-top: 1.5rem; font-style: normal; line-height: 1.7; }
|
|
14
|
+
.db-contact-details p, .db-contact-hours { margin: 0; white-space: pre-line; line-height: 1.7; }
|
|
15
|
+
.db-contact-hours { margin-top: 1rem; }
|
|
16
|
+
.db-contact-link { justify-self: start; }
|
|
17
|
+
.db-contact-link:focus-visible { outline: 3px solid currentColor; outline-offset: 4px; }
|
|
18
|
+
.db-contact-link:not([href]), .db-contact-link[href="mailto:"], .db-contact-link[href="tel:"], .db-contact-details p:empty, .db-contact-hours:empty { display: none; }
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
domma-block-contact - Contact details, an address and opening hours.
|
|
3
|
+
|
|
4
|
+
Parameters:
|
|
5
|
+
header - Section heading (h2)
|
|
6
|
+
blurb - Introduction, as plain text
|
|
7
|
+
email - Email address
|
|
8
|
+
phone - Phone number, including country code when useful
|
|
9
|
+
address - Postal address, as plain text
|
|
10
|
+
hours - Opening hours, as plain text
|
|
11
|
+
|
|
12
|
+
Example:
|
|
13
|
+
[domma-block-contact header="Get in touch" blurb="Tell us how we can help." email="hello@example.com" phone="+44 1234 567890" address="Your business address" hours="Your opening hours" /]
|
|
14
|
+
-->
|
|
15
|
+
<section class="db-contact"><h2 class="db-contact-heading">{{header}}</h2><p class="db-contact-blurb">{{blurb}}</p><address class="db-contact-details"><a class="db-contact-link" href="mailto:{{email}}">{{email}}</a><a class="db-contact-link" href="tel:{{phone}}">{{phone}}</a><p>{{address}}</p></address><p class="db-contact-hours">{{hours}}</p></section>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
.db-cta {
|
|
2
|
+
margin-block: 1.5rem; padding: clamp(2rem, 5vw, 4rem) 1.5rem; border: 1px solid var(--dm-card-border, #d5e0e5); border-radius: var(--dm-radius-xl, 1rem); background: var(--dm-card-bg, #f4f8fa); color: var(--dm-text, #152832); text-align: center; }
|
|
3
|
+
.db-cta-heading { margin: 0 auto 1rem; max-width: 48rem; font-size: clamp(1.75rem, 3vw, 2.5rem); line-height: 1.2; color: inherit; overflow-wrap: anywhere; }
|
|
4
|
+
.db-cta-blurb { margin: 0 auto; max-width: 42rem; font-size: 1.1rem; line-height: 1.75; white-space: pre-line; overflow-wrap: anywhere; }
|
|
5
|
+
.db-cta a.db-cta-link { display: inline-block; margin-top: 1.5rem; padding: .8rem 1.25rem; border: 2px solid currentColor; border-radius: var(--dm-radius, .5rem); color: inherit; font-weight: 600; text-decoration: none; overflow-wrap: anywhere; }
|
|
6
|
+
.db-cta a.db-cta-link:hover { text-decoration: underline; }
|
|
7
|
+
.db-cta a.db-cta-link:focus-visible { outline: 3px solid currentColor; outline-offset: 4px; }
|
|
8
|
+
.db-cta a.db-cta-link[href=""], .db-cta a.db-cta-link:not([href]), .db-cta a.db-cta-link:empty { display: none; }
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
domma-block-cta - A welcoming call to action using your site's theme colours.
|
|
3
|
+
|
|
4
|
+
Parameters:
|
|
5
|
+
header - Section heading (h2)
|
|
6
|
+
blurb - Short invitation, as plain text
|
|
7
|
+
link - Button destination
|
|
8
|
+
label - Button text
|
|
9
|
+
|
|
10
|
+
Example:
|
|
11
|
+
[domma-block-cta header="Have something in mind?" blurb="Tell us a little about your plans." link="/contact" label="Let us help" /]
|
|
12
|
+
-->
|
|
13
|
+
<section class="db-cta">
|
|
14
|
+
<h2 class="db-cta-heading">{{header}}</h2>
|
|
15
|
+
<p class="db-cta-blurb">{{blurb}}</p>
|
|
16
|
+
<a class="db-cta-link db-cta-btn" href="{{link}}">{{label}}</a>
|
|
17
|
+
</section>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
.db-faq {
|
|
2
|
+
margin-block: 1.5rem;
|
|
3
|
+
color: var(--dm-text, #152832);
|
|
4
|
+
overflow-wrap: anywhere;
|
|
5
|
+
}
|
|
6
|
+
.db-faq-heading { margin: 0 0 1rem; color: inherit; font-size: clamp(1.6rem, 3vw, 2.4rem); line-height: 1.2; }
|
|
7
|
+
.db-faq-blurb { margin: 0; line-height: 1.75; white-space: pre-line; }
|
|
8
|
+
.db-faq-blurb:empty { display: none; }
|
|
9
|
+
.db-faq-list { display: grid; gap: .75rem; margin: 1.5rem 0 0; }
|
|
10
|
+
.db-faq-item { border: 1px solid var(--dm-card-border, var(--dm-border, #d5e0e5)); border-radius: var(--dm-radius, .5rem); background: var(--dm-card-bg, var(--dm-surface, #f5f8fa)); }
|
|
11
|
+
.db-faq-item dt { padding: 1.25rem; font-weight: 600; line-height: 1.5; }
|
|
12
|
+
.db-faq-item dd { margin: 0; padding: 0 1.25rem 1.25rem; line-height: 1.75; white-space: pre-line; }
|
|
13
|
+
.db-faq-item:has(dt:empty) { display: none; }
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
domma-block-faq - Up to three questions and answers, readable without JavaScript.
|
|
3
|
+
|
|
4
|
+
Parameters:
|
|
5
|
+
header - Section heading (h2)
|
|
6
|
+
blurb - Introduction, as plain text
|
|
7
|
+
question1 - Question 1
|
|
8
|
+
answer1 - Answer 1, as plain text
|
|
9
|
+
question2 - Question 2
|
|
10
|
+
answer2 - Answer 2, as plain text
|
|
11
|
+
question3 - Question 3
|
|
12
|
+
answer3 - Answer 3, as plain text
|
|
13
|
+
|
|
14
|
+
Example:
|
|
15
|
+
[domma-block-faq header="A few common questions" question1="How do we get started?" answer1="Get in touch and tell us what you have in mind." question2="Can I ask a question first?" answer2="Of course. We are happy to help." /]
|
|
16
|
+
-->
|
|
17
|
+
<section class="db-faq"><h2 class="db-faq-heading">{{header}}</h2><p class="db-faq-blurb">{{blurb}}</p><dl class="db-faq-list"><div class="db-faq-item"><dt>{{question1}}</dt><dd>{{answer1}}</dd></div><div class="db-faq-item"><dt>{{question2}}</dt><dd>{{answer2}}</dd></div><div class="db-faq-item"><dt>{{question3}}</dt><dd>{{answer3}}</dd></div></dl></section>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
.db-features {
|
|
2
|
+
margin-block: 1.5rem;
|
|
3
|
+
color: var(--dm-text, #152832);
|
|
4
|
+
overflow-wrap: anywhere;
|
|
5
|
+
}
|
|
6
|
+
.db-features-heading { margin: 0 0 1rem; color: inherit; font-size: clamp(1.6rem, 3vw, 2.4rem); line-height: 1.2; }
|
|
7
|
+
.db-features-blurb { margin: 0; line-height: 1.75; white-space: pre-line; }
|
|
8
|
+
.db-features-blurb:empty { display: none; }
|
|
9
|
+
.db-features-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); gap: 1.25rem; margin-top: 1.5rem; }
|
|
10
|
+
.db-features-card {
|
|
11
|
+
padding: clamp(1.25rem, 3vw, 2rem);
|
|
12
|
+
border: 1px solid var(--dm-card-border, var(--dm-border, #d5e0e5));
|
|
13
|
+
border-radius: var(--dm-radius-xl, 1rem);
|
|
14
|
+
background: var(--dm-card-bg, var(--dm-surface, #f5f8fa));
|
|
15
|
+
}
|
|
16
|
+
.db-features-card h3 { margin: 0 0 .75rem; color: inherit; font-size: 1.25rem; }
|
|
17
|
+
.db-features-card p { margin: 0; line-height: 1.7; white-space: pre-line; }
|
|
18
|
+
.db-features-card:has(h3:empty) { display: none; }
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
domma-block-features - An introduction and up to three feature cards.
|
|
3
|
+
|
|
4
|
+
Parameters:
|
|
5
|
+
header - Section heading (h2)
|
|
6
|
+
blurb - Introduction, as plain text
|
|
7
|
+
title1 - Feature 1 heading
|
|
8
|
+
text1 - Feature 1 description
|
|
9
|
+
title2 - Feature 2 heading
|
|
10
|
+
text2 - Feature 2 description
|
|
11
|
+
title3 - Feature 3 heading
|
|
12
|
+
text3 - Feature 3 description
|
|
13
|
+
|
|
14
|
+
Example:
|
|
15
|
+
[domma-block-features header="How we help" blurb="Practical support for your business." title1="Plan" text1="Find the right direction." title2="Build" text2="Bring your ideas to life." title3="Grow" text3="Keep moving forward." /]
|
|
16
|
+
-->
|
|
17
|
+
<section class="db-features"><h2 class="db-features-heading">{{header}}</h2><p class="db-features-blurb">{{blurb}}</p><div class="db-features-grid"><article class="db-features-card"><h3>{{title1}}</h3><p>{{text1}}</p></article>
|
|
18
|
+
<article class="db-features-card"><h3>{{title2}}</h3><p>{{text2}}</p></article>
|
|
19
|
+
<article class="db-features-card"><h3>{{title3}}</h3><p>{{text3}}</p></article></div></section>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
.db-hero {
|
|
2
|
+
margin-block: 1.5rem;
|
|
3
|
+
color: var(--dm-text, #152832);
|
|
4
|
+
overflow-wrap: anywhere;
|
|
5
|
+
padding: clamp(2rem, 6vw, 5rem) 1.25rem; text-align: center;
|
|
6
|
+
}
|
|
7
|
+
.db-hero-heading { margin: 0 0 1rem; color: inherit; font-size: clamp(1.6rem, 3vw, 2.4rem); line-height: 1.2; }
|
|
8
|
+
.db-hero-blurb { margin: 0; line-height: 1.75; white-space: pre-line; }
|
|
9
|
+
.db-hero-blurb:empty { display: none; }
|
|
10
|
+
.db-hero-heading { max-width: 54rem; margin-inline: auto; font-size: clamp(2rem, 5vw, 4rem); }
|
|
11
|
+
.db-hero-blurb { max-width: 42rem; margin-inline: auto; font-size: 1.15rem; }
|
|
12
|
+
.db-hero a.db-hero-link { display: inline-block; max-width: 100%; box-sizing: border-box; margin-top: 1.5rem; padding: .8rem 1.25rem; border: 2px solid currentColor; border-radius: var(--dm-radius, .5rem); color: inherit; font-weight: 600; text-decoration: none; line-height: 1.4; }
|
|
13
|
+
.db-hero a.db-hero-link:hover { text-decoration: underline; }
|
|
14
|
+
.db-hero a.db-hero-link:focus-visible { outline: 3px solid currentColor; outline-offset: 4px; }
|
|
15
|
+
.db-hero a.db-hero-link[href=""], .db-hero a.db-hero-link:not([href]), .db-hero a.db-hero-link:empty { display: none; }
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
domma-block-hero - A centred page introduction with an optional button.
|
|
3
|
+
|
|
4
|
+
Parameters:
|
|
5
|
+
header - Main page heading (h1; use once per page)
|
|
6
|
+
blurb - Short introduction, as plain text
|
|
7
|
+
link - Optional button destination
|
|
8
|
+
label - Optional button text
|
|
9
|
+
|
|
10
|
+
Example:
|
|
11
|
+
[domma-block-hero header="Welcome to your next chapter" blurb="Say what you do and who you help." link="/contact" label="Let us help" /]
|
|
12
|
+
-->
|
|
13
|
+
<section class="db-hero"><h1 class="db-hero-heading">{{header}}</h1><p class="db-hero-blurb">{{blurb}}</p><a class="db-hero-link db-hero-btn" href="{{link}}">{{label}}</a></section>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
.db-image {
|
|
2
|
+
margin-block: 1.5rem;
|
|
3
|
+
color: var(--dm-text, #152832);
|
|
4
|
+
overflow-wrap: anywhere;
|
|
5
|
+
}
|
|
6
|
+
.db-image img { display: block; width: 100%; height: auto; border-radius: var(--dm-radius-xl, 1rem); }
|
|
7
|
+
.db-image figcaption { margin-top: .75rem; font-size: .95rem; line-height: 1.6; text-align: center; white-space: pre-line; }
|
|
8
|
+
.db-image img[src=""], .db-image img:not([src]), .db-image figcaption:empty { display: none; }
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
domma-block-image - An uncropped image with an optional caption.
|
|
3
|
+
|
|
4
|
+
Parameters:
|
|
5
|
+
image - Image address from your Media library
|
|
6
|
+
alt - Image description; empty for a decorative image
|
|
7
|
+
caption - Optional image caption, as plain text
|
|
8
|
+
|
|
9
|
+
Example:
|
|
10
|
+
[domma-block-image image="/media/your-work.jpg" alt="Describe what visitors can see" caption="Add a little context to the image." /]
|
|
11
|
+
-->
|
|
12
|
+
<figure class="db-image"><img src="{{image}}" alt="{{alt}}" loading="lazy" decoding="async"><figcaption>{{caption}}</figcaption></figure>
|