Maine DOE Web Design Center
This guide is a reference for editors building and updating pages on the Maine Department of Education website. Each tab contains live previews and ready-to-copy HTML snippets for the most common components used across the site.
How to Use This Guide
Step 1 — Browse the tabs. Each tab above covers a different component type: Cards, Accordions, Tables, Buttons, Blockheads, and Contact Cubes. Click a tab to see all available variants for that component.
Step 2 — Preview before you copy. Every component shows a live preview above its code block so you can see exactly how it will render on the page. The preview uses the same CSS as the live site, so what you see here is what you get.
Step 3 — Copy the code. Click the Copy button in the top-right corner of any dark code block to copy the full HTML snippet to your clipboard.
Step 4 — Paste into the source editor. In Drupal, open the page you want to edit, click into the body field, then switch to Source view (the <> button in the CKEditor toolbar). Paste the copied code at the appropriate point in the page source.
Step 5 — Replace placeholder content. Update all placeholder text, links, image paths, and UUIDs with your actual content. Look for values like Card Title, /your-link, YOUR-UUID, and YOUR-IMAGE.png — these are the spots that need to be customized.
Step 6 — Switch back to visual view and save. After pasting and editing the source, click Source again to return to the visual editor and confirm everything looks right, then save the page normally.
data-entity-uuid attribute. If you are pasting image HTML manually, upload the image through the media browser first to get the correct UUID, then copy it into the snippet.What’s in This Guide
Cards — Bootstrap card components for highlighting content with headers, images, lists, and call-to-action buttons. Available in 1, 2, and 3-column layouts.
Accordions — Expandable/collapsible panels for organizing large amounts of content without overwhelming the page. Good for FAQs, policy details, and resource lists.
Tables — Standard striped tables for structured data, and searchable DataTables for longer datasets that benefit from filtering and sorting.
Buttons — Full-width block buttons and centered auto-width buttons for calls to action inside and outside of cards.
Blockheads — Dark gradient section header bars. Supports H1–H6 for proper heading hierarchy. See the Blockheads tab for accessibility guidance.
Contact Cube — Styled contact information boxes for staff listings. Supports single and multiple contacts with a divider.
Video Tutorial
New to editing pages in Drupal? Watch this walkthrough to get familiar with the source editor, media browser, and saving your changes.
1 Card — Header + Button
Full-width card with a colored header bar and a single full-width button.
Body text describing the content of this card goes here.
Button Label<div class="row justify-content-center"> <div class="col-sm-12"> <div class="card"> <div class="card-header text-white bg-primary mb-3"> <strong>Card Title</strong> </div> <div class="card-body"> <p>Body text here.</p> <a class="btn btn-info btn-lg btn-block mt-4" href="/your-link">Button Label</a> </div> </div> </div> </div>
1 Card — Header + List + Button
Full-width card with a header, bulleted resource links, and a CTA button.
<div class="row justify-content-center"> <div class="col-sm-12"> <div class="card"> <div class="card-header text-white bg-primary mb-3"> <strong>Card Title</strong> </div> <div class="card-body"> <p>Body text here.</p> <ul class="list-group list-group-flush"> <li class="list-group-item"><a href="/link-one">Resource Link One</a></li> <li class="list-group-item"><a href="/link-two">Resource Link Two</a></li> <li class="list-group-item"><a href="/link-three">Resource Link Three</a></li> </ul> <a class="btn btn-info btn-lg btn-block mt-4" href="/your-link">Learn More</a> </div> </div> </div> </div>
1 Card — Image + List + Button
Full-width card with image on top, resource links, and a full-width button.

Card Title
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Learn More<div class="row justify-content-center"> <div class="col-sm-12"> <div class="card"> <img alt="Describe your image" class="card-img-top" data-entity-type="file" data-entity-uuid="YOUR-UUID" src="/doe/sites/maine.gov.doe/files/inline-images/YOUR-IMAGE.png" width="100%" /> <div class="card-body"> <h5 class="card-title">Card Title</h5> <p class="card-text">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p> <ul class="list-group list-group-flush"> <li class="list-group-item"><a href="/link-one">Resource Link One</a></li> <li class="list-group-item"><a href="/link-two">Resource Link Two</a></li> </ul> <a class="btn btn-info btn-lg btn-block mt-4" href="/your-link">Learn More</a> </div> </div> </div> </div>
2 Cards — Header + Button
Two side-by-side cards each with a header bar and a full-width button.
Body text here.
Button LabelBody text here.
Button Label<div class="row justify-content-center"> <!-- Card 1 --> <div class="col-sm-6"> <div class="card"> <div class="card-header text-white bg-primary mb-3"><strong>Card One</strong></div> <div class="card-body"> <p>Body text here.</p> <a class="btn btn-info btn-lg btn-block mt-4" href="/your-link">Button Label</a> </div> </div> </div> <!-- Card 2 --> <div class="col-sm-6"> <div class="card"> <div class="card-header text-white bg-primary mb-3"><strong>Card Two</strong></div> <div class="card-body"> <p>Body text here.</p> <a class="btn btn-info btn-lg btn-block mt-4" href="/your-link">Button Label</a> </div> </div> </div> </div>
2 Cards — Header + List + Button
Two cards each with a header, bulleted resource links, and a button.
<div class="row justify-content-center"> <!-- Card 1 --> <div class="col-sm-6"> <div class="card"> <div class="card-header text-white bg-primary mb-3"><strong>Card One</strong></div> <div class="card-body"> <p>Body text here.</p> <ul class="list-group list-group-flush"> <li class="list-group-item"><a href="/link">Resource Link One</a></li> <li class="list-group-item"><a href="/link">Resource Link Two</a></li> </ul> <a class="btn btn-info btn-lg btn-block mt-4" href="/your-link">Learn More</a> </div> </div> </div> <!-- Card 2 — duplicate above --> <div class="col-sm-6"> <div class="card"> <div class="card-header text-white bg-primary mb-3"><strong>Card Two</strong></div> <div class="card-body"> <p>Body text here.</p> <ul class="list-group list-group-flush"> <li class="list-group-item"><a href="/link">Resource Link One</a></li> <li class="list-group-item"><a href="/link">Resource Link Two</a></li> </ul> <a class="btn btn-info btn-lg btn-block mt-4" href="/your-link">Learn More</a> </div> </div> </div> </div>
2 Cards — Image + List + Button
Two cards each with an image on top, resource links, and a full-width button.

Card Title One
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.
Learn More
Card Title Two
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.
Learn More<div class="row justify-content-center"> <!-- Card 1 --> <div class="col-sm-6"> <div class="card"> <img alt="Describe your image" class="card-img-top" data-entity-type="file" data-entity-uuid="YOUR-UUID" src="/doe/sites/maine.gov.doe/files/inline-images/YOUR-IMAGE.png" width="100%" /> <div class="card-body"> <h5 class="card-title">Card Title One</h5> <p class="card-text">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p> <ul class="list-group list-group-flush"> <li class="list-group-item"><a href="/link">Resource Link One</a></li> <li class="list-group-item"><a href="/link">Resource Link Two</a></li> </ul> <a class="btn btn-info btn-lg btn-block mt-4" href="/your-link">Learn More</a> </div> </div> </div> <!-- Card 2 — duplicate above --> </div>
3 Cards — Header + Button
Three cards each with a colored header and a full-width button. The Math Pathways pattern.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.
Learn MoreLorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.
Learn MoreLorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.
Learn More<div class="row justify-content-center"> <!-- Card 1 --> <div class="col-sm-4"> <div class="card"> <div class="card-header text-white bg-primary mb-3"><strong>Card Title</strong></div> <div class="card-body"> <p>Body text here.</p> <a class="btn btn-info btn-lg btn-block mt-4" href="/your-link">Button Label</a> </div> </div> </div> <!-- Card 2 --> <div class="col-sm-4"> <div class="card"> <div class="card-header text-white bg-primary mb-3"><strong>Card Title</strong></div> <div class="card-body"> <p>Body text here.</p> <a class="btn btn-info btn-lg btn-block mt-4" href="/your-link">Button Label</a> </div> </div> </div> <!-- Card 3 --> <div class="col-sm-4"> <div class="card"> <div class="card-header text-white bg-primary mb-3"><strong>Card Title</strong></div> <div class="card-body"> <p>Body text here.</p> <a class="btn btn-info btn-lg btn-block mt-4" href="/your-link">Button Label</a> </div> </div> </div> </div>
3 Cards — Header + List + Button
Three cards each with a colored header, bulleted resource links, and a full-width button.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt.
Learn MoreLorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt.
Learn MoreLorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt.
Learn More<div class="row justify-content-center"> <!-- Card 1 --> <div class="col-sm-4"> <div class="card"> <div class="card-header text-white bg-primary mb-3"><strong>Topic 1</strong></div> <div class="card-body"> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p> <ul class="list-group list-group-flush"> <li class="list-group-item"><a href="/link">Resource Link One</a></li> <li class="list-group-item"><a href="/link">Resource Link Two</a></li> </ul> <a class="btn btn-info btn-lg btn-block mt-4" href="/your-link">Learn More</a> </div> </div> </div> <!-- Cards 2 and 3 — duplicate above block --> </div>
3 Cards — Image + List + Button
Three cards each with image on top, resource links, and a full-width button.

Card Title One
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt.
Learn More
Card Title Two
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt.
Learn More
Card Title Three
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt.
Learn More<div class="row justify-content-center"> <!-- Card 1 --> <div class="col-sm-4"> <div class="card"> <img alt="Card image cap" class="card-img-top" data-entity-type="file" data-entity-uuid="YOUR-UUID" src="/doe/sites/maine.gov.doe/files/inline-images/YOUR-IMAGE.png" width="100%" /> <div class="card-body"> <h5 class="card-title">Card Title</h5> <p class="card-text">Card description text goes here.</p> <ul class="list-group list-group-flush"> <li class="list-group-item"><a href="/link">Resource Link One</a></li> <li class="list-group-item"><a href="/link">Resource Link Two</a></li> </ul> <p><a class="btn btn-info btn-lg btn-block mt-4" href="/link">Home Page Button</a></p> </div> </div> </div> <!-- Cards 2 and 3 — duplicate above block --> </div>
<dl>. Do not put multiple <dt> tags inside one <dl> — that breaks them.When to Use Accordions
Accordions are best when you have several distinct sections of content that users may not all need to read — they reduce page length and let visitors scan titles to find what's relevant to them. Good uses include:
- FAQs — Each question is a panel title, the answer lives inside.
- Long policy or regulatory text — Break a lengthy document into named sections so users can jump to what applies to them.
- Resource lists by topic — Group links or documents under category headings without overwhelming the page.
- Multi-step processes — Each step or phase as its own panel keeps the page manageable.
Avoid using accordions for content that all users need to read in sequence — if every panel will be opened anyway, a plain page layout is clearer. Also avoid very short content (one or two sentences) where the overhead of clicking to expand isn't worth it.
One expandable panel. Duplicate the <dl> block to add more.
- What support services are available to Maine students?
-
Maine students have access to a wide range of support services through their local school administrative units (SAUs). These include academic tutoring, mental health counseling, special education services, English language learning programs, and Title I support for students in low-income areas.
<div class="ckeditor-accordion-container"> <dl class="ckeditor-accordion"> <dt>Accordion Title</dt> <dd> <p>Content goes here -- paragraphs, lists, links, etc.</p> </dd> </dl> </div>
Multiple Accordions
Stack multiple panels. One <dl> per item, all inside one container.
- What is the Maine Learning Results?
-
The Maine Learning Results are the state's academic standards, defining what students should know and be able to do in each subject area. They guide curriculum development and assessment across all Maine public schools.
- How does Maine assess student performance?
-
Maine uses a combination of statewide assessments including the Maine Educational Assessments (MEA) in grades 3–8, the SAT in grade 11, and the Next Generation Science Standards (NGSS) assessment. Results are used to inform instruction and school improvement planning.
- Where can I find information about school choice options?
-
Information about school choice, including public school choice, charter schools, and tuition programs, is available through your local SAU and the Maine DOE website. Eligibility and options vary by school and district.
<div class="ckeditor-accordion-container"> <dl class="ckeditor-accordion"> <dt>Section One</dt> <dd><p>Content for section one.</p></dd> </dl> <dl class="ckeditor-accordion"> <dt>Section Two</dt> <dd><p>Content for section two.</p></dd> </dl> <dl class="ckeditor-accordion"> <dt>Section Three</dt> <dd><p>Content for section three.</p></dd> </dl> </div>
Standard Striped Table
Accessible table with <thead> and striped rows. Add or remove <tr> rows as needed.
| Center | Location | Next Full |
|---|---|---|
| Capital Area Technical Center | Augusta | 2023-2024 F |
| Region 4, United Technologies Center | Bangor | 2024-2025 F |
| Bath Regional Career and Technical Center | Bath | 2020-2021 S |
<table class="table table-striped table-bordered" width="100%"> <caption> </caption> <thead> <tr> <th scope="col">Column One</th> <th scope="col">Column Two</th> <th scope="col">Column Three</th> </tr> </thead> <tbody> <tr> <td>Row 1, Cell 1</td> <td>Row 1, Cell 2</td> <td>Row 1, Cell 3</td> </tr> <!-- Add more <tr> rows here --> </tbody> </table>
Searchable Table
Uses the tables class to enable DataTables search and sort on pages where the plugin is loaded.
| Organization | Phone | Website |
|---|---|---|
| Maine Department of Education | 207-624-6600 | www.maine.gov/doe |
| Maine School Management Association | 207-622-3473 | www.msma.org |
| Maine Education Association | 207-622-5866 | www.mea.org |
| Maine Parent Federation | 207-588-1933 | www.mpf.org |
<table border="1" class="tables table-striped table-hover w-100"> <thead> <tr> <th scope="col">Organization</th> <th scope="col">Phone</th> <th scope="col">Website</th> </tr> </thead> <tbody> <tr> <td>Organization Name</td> <td>207-555-5555</td> <td><a href="http://www.example.org">www.example.org</a></td> </tr> <!-- Add more <tr> rows here --> </tbody> </table>
Short / Centered Button
Auto-width, centered. Wrap in a centered div to keep it from stretching edge-to-edge.
<div class="text-align-center"> <a class="btn btn-info btn-lg mt-4" href="https://www.maine.gov/doe/">Button Label</a> </div>
Full-Width Block Button
Stretches edge-to-edge. Use inside cards or at the bottom of a section.
<a class="btn btn-info btn-lg btn-block mt-4" href="https://maine.gov/doe">Button Label</a>
Heading Hierarchy & Accessibility
Blockheads are visual section headers — but the heading level you choose (h1 through h6) also determines how screen readers and search engines understand your page structure. Choose the right level based on where the section sits in the page outline, not based on how large you want the text to look.
- H1 — The page title. There should only ever be one H1 per page. On most DOE pages this is already set by the page title field in Drupal — do not add a second H1 in the body.
- H2 — Major sections of the page. Most blockheads you place in body content should be H2.
- H3 — Subsections within an H2 section. Only use H3 if there is already an H2 above it on the same page.
- H4–H6 — Deeper nesting levels. Rarely needed on most pages. Only use if H3 already exists above it.
Blockhead — H1
Top-level page title. Use sparingly — only one H1 per page.
Page Title (H1)
<div class="blockhead"> <h1>Page Title</h1> </div>
Blockhead — H2
Major section header. Most commonly used blockhead level.
Major Section Title (H2)
<div class="blockhead"> <h2>Major Section Title</h2> </div>
Blockhead — H3
Subsection header within a major section.
Subsection Title (H3)
<div class="blockhead"> <h3>Subsection Title</h3> </div>
Blockhead — H4
Sub-subsection header. Use when you need a third tier of hierarchy.
Sub-Subsection Title (H4)
<div class="blockhead"> <h4>Sub-Subsection Title</h4> </div>
Blockhead — H5
Minor heading. Use for labels or callout titles within content.
Minor Heading (H5)
<div class="blockhead"> <h5>Minor Heading</h5> </div>
Blockhead — H6
Smallest heading level. Use for fine-print labels or deeply nested content.
Small Label (H6)
<div class="blockhead"> <h6>Small Label</h6> </div>
Firstname.Lastname@maine.gov. Use <hr /> to divide multiple contacts inside one box.Single Contact
One person with name, title, phone, and email.
Contact
Name in Bold
Title not in Bold
Phone: 555-555-5555
Email: Firstname.Lastname@maine.gov
<div class="contact-cube"> <h3><strong>Contact</strong></h3> <p> <strong>Name in Bold</strong><br /> Title not in Bold<br /> <strong>Phone</strong>: 555-555-5555<br /> <strong>Email</strong>: <a href="mailto:Firstname.Lastname@maine.gov"> Firstname.Lastname@maine.gov </a> </p> </div> <p> </p>
Multiple Contacts
Two or more contacts in one box with a divider line between them.
Contact
Name in Bold
Title not in Bold
Phone: 555-555-5555
Email: Firstname.Lastname@maine.gov
Second Name
Title not in Bold
Phone: 555-555-5555
Email: Second.Name@maine.gov
<div class="contact-cube"> <h3><strong>Contact</strong></h3> <p> <strong>Name in Bold</strong><br /> Title not in Bold<br /> <strong>Phone</strong>: 555-555-5555<br /> <strong>Email</strong>: <a href="mailto:Firstname.Lastname@maine.gov"> Firstname.Lastname@maine.gov </a> </p> <hr /> <p> <strong>Second Name</strong><br /> Title not in Bold<br /> <strong>Phone</strong>: 555-555-5555<br /> <strong>Email</strong>: <a href="mailto:Second.Name@maine.gov"> Second.Name@maine.gov </a> </p> </div> <p> </p>